界面内可修改的常量

Ete*_*ght 2 java interface constants

我知道基于Java教程:

除了方法声明之外,接口还可以包含常量声明.接口中定义的所有常量值都是隐式public,static和final.再一次,可以省略这些修饰符.

是否可以使接口内的值由实现所述接口的所有类共享和修改?

Sea*_*oyd 9

理论上,是的,如果你使用一个可变类型作为你的"常数",例如AtomicReference.
但是,这将是一个糟糕的设计!

public interface MyInterface{
    AtomicReference<String> NAME = new AtomicReference<String>("Fred");
}


public static void main(final String[] args){
    System.out.println(MyInterface.NAME);
    MyInterface.NAME.set("Jim");
    System.out.println(MyInterface.NAME);
}
Run Code Online (Sandbox Code Playgroud)

输出:

弗雷德·
吉姆

您可以使用集合,地图,数组或任何其他类型可变地保存此模式的值,但我会认真请求您重新考虑它.

  • @Eternal_Light是的,它是正确的,因为它编译(并且有效).但不是所有编译都应该使用:-) (3认同)