当前位置:  开发笔记 > 编程语言 > 正文

在Java中构造函数之前初始化final变量

如何解决《在Java中构造函数之前初始化final变量》经验,为你挑选了3个好方法。

有没有在Java构造函数中使用final变量的解决方案?问题是,如果我初始化最终字段,如:

private final String name = "a name";

那么我不能在构造函数中使用它.Java首先运行构造函数然后运行字段.有没有一个解决方案允许我访问构造函数中的最后一个字段?



1> Johannes Wei..:

我真的不明白你的问题.那

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



2> Hank Gay..:

在构造函数中进行初始化,例如,

private final String name;
private YourObj() {
    name = "a name";
}

当然,如果你真的知道变量声明时间的值,那么使它成为常量更有意义,例如,

private static final String NAME = "a name";



3> Steve Gelman..:

我们正在摆脱这个问题.

是的,您可以使用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'修饰符使属性不可变.


基本上,您可以在构造函数中设置值.构造函数完成后,属性是常量.
我收到错误"无法为最终变量值赋值".
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有