class 对象之间的引用用 null 初始化
Referencing between class Object initialized with null
这是我的例子:我想知道是否可以传递一个用 null 初始化的参数,然后用正确的值初始化对象。
private class Source {
String str;
String getStringValue() {
return str;
}
void setStringValue(String str) {
this.str = str;
}
}
private class UserSource {
Source src;
UserSource(Source src) {
this.src = src;
}
String getValue() {
return src.getStringValue();
}
void setValue(String str) {
src.setStringValue(str);
}
}
现在我是怎么用的。
Source srcW = new Source();
UserSource userSourceW = new UserSource(srcW);
srcW.setStringValue("Second Value");
System.out.println("From UserSource:" + userSourceW.getValue());
userSourceW.setValue("Is not Second");
System.out.println("From Source:" + srcW.getStringValue());
输出:
From UserSource:Second Value
From Source:Is not Second
但是,想知道是否可以像这样使用:
Source srcN = null; // YES I want to assign Not initialized!
UserSource userSourceN = new UserSource(srcN);
srcN = new Source();
srcN.setStringValue("First Value");
System.out.println("From UserSource:" + userSourceN.getValue());
当然输出是
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
还有其他选择吗?
很遗憾,这是不可能的。当值最初为 null
时,您将传递 null
引用。稍后你用 srcN = new Source();
初始化它,但你正在重写源代码。
您可以使用 Reference<Source>
解决它。但这只会使代码更加繁琐。此外,Source
class 是将其作为空源传递的完美候选者,然后稍后使用 setString()
.
对其进行初始化
我错过了什么吗?你对代码有什么问题?
这是我的例子:我想知道是否可以传递一个用 null 初始化的参数,然后用正确的值初始化对象。
private class Source {
String str;
String getStringValue() {
return str;
}
void setStringValue(String str) {
this.str = str;
}
}
private class UserSource {
Source src;
UserSource(Source src) {
this.src = src;
}
String getValue() {
return src.getStringValue();
}
void setValue(String str) {
src.setStringValue(str);
}
}
现在我是怎么用的。
Source srcW = new Source();
UserSource userSourceW = new UserSource(srcW);
srcW.setStringValue("Second Value");
System.out.println("From UserSource:" + userSourceW.getValue());
userSourceW.setValue("Is not Second");
System.out.println("From Source:" + srcW.getStringValue());
输出:
From UserSource:Second Value
From Source:Is not Second
但是,想知道是否可以像这样使用:
Source srcN = null; // YES I want to assign Not initialized!
UserSource userSourceN = new UserSource(srcN);
srcN = new Source();
srcN.setStringValue("First Value");
System.out.println("From UserSource:" + userSourceN.getValue());
当然输出是
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
还有其他选择吗?
很遗憾,这是不可能的。当值最初为 null
时,您将传递 null
引用。稍后你用 srcN = new Source();
初始化它,但你正在重写源代码。
您可以使用 Reference<Source>
解决它。但这只会使代码更加繁琐。此外,Source
class 是将其作为空源传递的完美候选者,然后稍后使用 setString()
.
我错过了什么吗?你对代码有什么问题?