有没有在Java构造函数中使用final变量的解决方案?问题是,如果我初始化最终字段,如:
private final String name = "a name";
那么我不能在构造函数中使用它.Java首先运行构造函数然后运行字段.有没有一个解决方案允许我访问构造函数中的最后一个字段?
我真的不明白你的问题.那
public class Test3 { private final String test = "test123"; public Test3() { System.out.println("Test = "+test); } public static void main(String[] args) { Test3 t = new Test3(); } }
执行如下:
$ javac Test3.java && java Test3 Test = test123
在构造函数中进行初始化,例如,
private final String name; private YourObj() { name = "a name"; }
当然,如果你真的知道变量声明时间的值,那么使它成为常量更有意义,例如,
private static final String NAME = "a name";
我们正在摆脱这个问题.
是的,您可以使用private final
变量.例如:
public class Account { private final String accountNumber; private final String routingNumber; public Account(String accountNumber, String routingNumber) { this.accountNumber = accountNumber; this.routingNumber = routingNumber; } }
这意味着Account类依赖于两个字符串,帐户和路由号码.构造Account类时必须设置这些类属性的值,并且如果不创建新类,则无法更改这些数字.
这里的'final'修饰符使属性不可变.