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.");
  }

我想让上面的东西工作,但它不会编译,因为type没有final人知道如何在 Java 中做到这一点?可能吗?

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 回答