java中没有const关键字,那么怎么实现常量呢?
会想到static final来修饰变量,让这个变量"变成"常量。
那么看下面的代码:
package a;
public class MM {
static final Stu s = new Stu();
public static void main(String[] ss) {
s.age = 4;
s.name = "test";
s = new Stu();// 这里会报错
}
}
class Stu {
int age;
String name;
}
这段代码在标记的地方会出错。
其实final关键字的作用仅仅是让这个变量不能再被赋予其他的值【意思是说这个引用不能再引用其他对象】。
上面代码并不能保证s对象内容不变。其实是可以给age和name赋值的。
下面这段代码说明了问题:
package a;
public class MM {
static final Stu s = new Stu();
public static void main(String[] ss) {
final Stu stu;
stu = new Stu();
stu = new Stu();//这里会报错,因为stu前面已经被assign过了,不能再次被assign了
}
}
class Stu {
int age;
String name;
}
其实java程序猿可以自己写代码来实现const关键字的。比如把类的字段都声明为private,然后只提供get方法。