Java value is always null?
我在Java中的值始终是NULL,但我不明白为什么,因为我使用类构造函数来设置变量的值。
我有这样的代码:
然后是以下内容:
1 2 3 4 5 6 7 8 9
| String cfgFilePath ;
public Driver(String cfgFile ) {
this. cfgFilePath = cfgFile ;
}
private ArrayList <String > keys = getKeys (cfgFilePath );
private String a1 = keys. get(0);
private String b1 = keys. get(1); |
号
出于某种原因,Intellij理念认为cfgfilepath总是空的。我正在用驱动程序类构造函数初始化它,那么为什么它是空的呢?当我运行程序时,我得到一个空指针异常。
- 参见stackoverflow.com/a/14806340/2864740(相关问题的直接相关答案)
将keys、a1和b1的初始化移动到构造函数,如下所示:
1 2 3 4 5 6 7 8 9 10
| public Driver(String cfgFile ) {
this. cfgFilePath = cfgFile ;
this. keys = getKeys (cfgFilePath );
this. a1 = keys. get(0);
this. b1 = keys. get(1);
}
private ArrayList <String > keys = new ArrayList <>();
private String a1 ;
private String b1 ; |
- 成功了,谢谢!但我想知道怎么做。我读了另一篇文章对初始化顺序的解释,但我仍然困惑于为什么这意味着那些变量总是空的。
- 这些属性为空,因为您的属性keys需要cfgFilePath才能正常工作。您在构造函数中设置了cfgFilePath,但keys属性在调用构造函数之前尝试初始化其属性,此时未设置cfgFilePath(如果未初始化,则字符串属性默认为null)。您有一个要实现的预定义执行顺序—>1。设置cfgFilePath和2。初始化其他属性。