我正在寻找一种干净,安全的方法来确保类的字段永远不会被设置为null.我希望字段值在类构造函数中设置一次,以后再也不会修改.我认为他在C#中的readonly关键字允许这样做.有没有办法在Java中做同样的事情?
class foo
{
private Object bar;
public foo(Object pBar)
{
if(pBar == null)
{
bar = new Object();
}
else
{
bar = pBar
}
}
// I DO NOT WANT ANYONE TO MODIFY THE VALUE OF bar OUT OF THE CONSTRUCTOR
}
Run Code Online (Sandbox Code Playgroud)
您正在寻找关键字final.
class foo
{
private final Object bar;
public foo(Object pBar)
{
//Error check so that pBar is not null
//If it's not, set bar to pBar
bar = pBar;
}
}
Run Code Online (Sandbox Code Playgroud)
现在吧不能改变
以前的答案都是正确的,但pBar仍然可以设置为null:
new foo(null);
Run Code Online (Sandbox Code Playgroud)
所以最终的答案是使用final关键字并确保pBar不为null(如前所述):
public class Foo
{
private final Object bar;
public Foo(Object pBar)
{
if (pBar == null)
{
bar = new Object();
}else{
bar = pBar;
}
}
}
Run Code Online (Sandbox Code Playgroud)