一、接口中定义常量:
由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量。public interface Constants{
String name = "111";
}
public class read{
public static void main(String[] args){
("Class Constants's name = " + );
}
}
由于引用了一个static final 的字段,编译器已经将interface Constants中name的内容编译进了class read中,而不是对其引用。因此只有重新编译class read,interface Constants中name发生的变化才能在class read中反映。
二、类中定义public class Constants{
private static final String name = "111";
public static String getName(){
return name;
}
}
public class read{
public static void main(String[] args){
("Class Constants's name = " + ());
}
}
class read中是对Constants class的getName()方法的引用,当常量name的值改变时我们只需对class Constants中的常量做修改并重新编译,无需编译class read。
我们可以使用jdk提供的反编译工具javap反编译看个究竟,输入:javap -c read即可查看两种方式的不同。