【初心者】Java質問・相談スレッド123【歓迎】at TECH
【初心者】Java質問・相談スレッド123【歓迎】 - 暇つぶし2ch155:デフォルトの名無しさん
09/01/27 18:19:29
Enumの初期化について質問です。ネイティブライブラリを読み込んで、
そこから得られる値をJavaの定数にマッピングするクラスなのですが、
初めはこんな感じで実装していました。

public class TestConst {
  static { System.loadLibrary("libNativeHoge");}
  public static final int A = NativeHoge.getA();
  public static final int B = NativeHoge.getB(); ...

次にオシャレにEnumで実装しようとすると、static{}句をEnumの定義に
含めることが出来ないために怒られます。

public enum TestEnum {
  static { System.loadLibrary("libNativeHoge");} // 文法エラー
  A(NativeHoge.getA()), B(NativeHoge.getB()), ...

  private final int nativeVal;
  TestEnum(int nativeVal) {this.nativeVal = nativeVal;} ...

さらに、このEnumクラスをユーティリティクラスで包んで、そちらに
static{}句を移すとコンパイルは通るもののTestEnumの初期化前
にstatic{}句が呼ばれません。

public class TestUtil{
  static { System.loadLibrary("libNativeHoge");} // 切ないことに、呼ばれない
  public static enum TestEnum {...

Enumの初期化前に確実にある処理(上記例ではSystem.loadLibrary)
を実行する方法は何か無いでしょうか?


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch