0
  private static final Class<? extends UserManager> type;

  private static void setType(final Class <? extends UserManager> theType){
      if(type == null) type = theType;
      else throw new IllegalStateException("Type already set.");
  }

上記のようなものを動作させたいのですが、Javaでこれを行う方法を誰も知らないため、コンパイルされませんtypefinal出来ますか?

4

2 に答える 2

2

これは本質的に不可能です。初期化が完了した後は変更できない
finalことを意味します。

于 2012-06-07T16:51:18.897 に答える
0

デフォルトでは不可能ですが、リフレクションを使用すると:)すべてが可能になります

      Field modifiersField = Field.class.getDeclaredField("modifiers");
      modifiersField.setAccessible(true);
      modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

      field.set(null, newValue);
于 2012-06-07T16:53:12.080 に答える