我只是想澄清这一点。有什么区别 -
private static int STUDENT_AGE = 18;
and
private static final int STUDENT_AGE = 18;
领域内?
乔恩·斯基特(Jon Skeet)解释为“与特定实例根本无关”,好吧,我想我明白了。那么在这种情况下,final 到底做了什么?
下面的代码不起作用是因为学生年龄被分配为静态最终吗?这是否意味着默认年龄根本无法被覆盖?那么是否可以创建指定年龄而不是默认年龄的构造函数?
private String myName;
private String myAddress;
private int myYearEnrolled;
private String myGender;
private static final int STUDENT_AGE = 18;
public Student(String name, String address, int year, String gender) {
myName = name;
myAddress = address;
myYearEnrolled = year;
myGender = gender;
}
public Student(int age)
{
STUDENT_AGE = age;
}
static
意思是“与特定实例完全无关”-final
意味着初始化后不能更改该值并且该值must被初始化。
的组合final
and static
使您能够创建常量。不再以公共方式推荐这样做(对于例如私有上下文中的幻数来说完全可以),因为它不是类型安全的。使用Enum
post java 1.5 或按照 Joshua Blochs effective Java 中的建议在 java 1.5 之前创建自己的类型安全枚举this https://stackoverflow.com/questions/367104/enums-for-constants-in-java-is-this-good-style问题。
备注:大约一年后读到这篇文章,我想我需要强调的是,没有什么问题public static final
一般来说,字段,只是命名常量应该用enums
或其他类型的安全替代方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)