假设我想在类中有一堆私有静态对象,但它们是复杂的对象,我想使用特定的函数用一些参数初始化它们。理想情况下,我会编写这样的代码:
public class TestClass{
private Class ComplicatedObject{
private int anInteger;
private String aString;
public ComplicatedObject(int inputInt,String inputString){
anInteger = inputInt;
aString = inputString;
}
public void someMethod(){
//do a thing
}
}
private void MakeAThing(ComplicatedObject theThing, int someInt,int someString){
theThing = new ComplicatedObject(someInt,someString);
//do extra stuff that one might want to do here
}
private static ComplicatedObject IMPORTANT_OBJECT;
public TestClass(){
MakeAThing(IMPORTANT_OBJECT, 0,"Test");
IMPORTANT_OBJECT.someMethod();
}
}
当我在someMethod()
上调用IMPORTANT_OBJECT
时,IMPORTANT_OBJECT
实际上为空时,这会因为(据我了解Java)而崩溃 - MakeAThing
方法确实创建了一个新的object,但只有它的内部引用(theThing
)实际引用了新对象。 IMPORTANT_OBJECT
的引用仍为空。
有没有什么方法可以编写一个方法来改变IMPORTANT_OBJECT
引用新引用的引用?
(是的,我知道一个简单的解决方案就是只说IMPORTANT_OBJECT = new Object();
然后再添加参数,但这会让我的代码变得非常混乱(有很多"重要的对象"如果还有另一种方式,我更喜欢它。)
答案 0 :(得分:1)
返回新的ComplicatedObject的函数如何:
private ComplicatedObject MakeAThing(int someInt,int someString){
return new ComplicatedObject(someInt,someString);
}
只需初始化TestClass构造函数中的IMPORTANT_OBJECT
public TestClass(){
IMPORTANT_OBJECT = (0,"Test");
IMPORTANT_OBJECT.someMethod();
}
或者我误解了这个问题?