首页 / JAVA / 在java中使用final
在java中使用final
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在java中使用final,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2361字,纯文字阅读大概需要4分钟。
内容图文
![在java中使用final](/upload/InfoBanner/zyjiaocheng/745/45ff6282a5c34bcba4149012ab12d5cf.jpg)
我想知道它们之间有什么区别
public final type attribute_name;
和
private type attribute_name;
public type getA_name() {
return attribute_name;
}
基本上我想将属性设置为只读,因此在初始化后它不能改变.
我是公开最终的,还是将其设为私有,并且只能通过get方法访问它(没有set方法)?
解决方法:
必须在构造函数退出之前设置最终字段.设置后,无法修改引用(无法重新分配值).强调不能重新分配.这意味着虽然引用不能更改,但值本身可以更改.
这是合法的:
final List<Integer> list = new List<Integer>();
list.add(5); // the value of list changes, but the reference doesn't
这不是:
final List<Integer> list = new List<Integer>();
list = new List<Integer>(); // may seem sort of redundant but the compiler won't allow it nonetheless
具有唯一getter的私有变量可以由保存它的类在内部重新分配(但它在外部不可见,因此不能在持有它的类之外重新分配).此外,在类之外,引用是不可访问的,因此除了持有它的类之外,不能修改变量.
最终变量不能在任何地方重新分配,但如果它是公共的,则另一个类仍然可以访问引用并更改它指向的任何对象的值.
如果您不希望在初始化之后重新分配变量,请使用final和private.
使用final来做这样的事情:
public class User {
private final long registrationTimeMillis;
public User(/* various parameters probably would be here */) {
registrationTimeMillis = System.currentTimeMillis();
}
public long getRegistrationTimeMillis() {
return registrationTimeMillis;
}
}
我们不希望用户的注册时间会发生变化,所以在构建之后不允许它更改是有意义的.
对于像这样的事情,使用private而不使用setter:
public class VendingController() {
private int drinksStocked = 0;
private int drinksDispensed = 0;
public void dispenseDrink() {
drinksDispensed++;
}
public void stockDrinks(int numberOfDrinks) {
drinksStocked = getDrinksRemaining() + numberOfDrinks;
drinksDispensed = 0;
}
public int getDrinksRemaining() {
return drinksStocked - drinksDispensed;
}
}
除非调用allocateseDrink()或stockDrinks(int numberOfDrinks),否则我们不希望drinkDispensed的值发生变化.当自动售货机重新装满时,它仍然需要能够由自己的班级重新分配,所以我们不应该让它最终
关于使用public final,通常在Java中只对常量执行,并且还包括static关键字,因为常量不应该依赖于实例.
使用public static final时有意义的一个例子
public class UnitConversions {
public static final double CENTIMETERS_PER_INCH = 2.54;
}
然后可以将其用于如下方法中
public double convertFromCentimetersToInches(double centimeters) {
return centimeters / UnitConversions.CENTIMETERS_PER_INCH;
}
祝你好运OP和快乐的编码.
内容总结
以上是互联网集市为您收集整理的在java中使用final全部内容,希望文章能够帮你解决在java中使用final所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。