在 Java 中的方法中初始化对象
Initializing an object in a method in Java
假设我想在 class 中有一堆私有静态对象,但它们是复杂的对象,我想使用特定的函数用一些参数初始化它们。理想情况下,我会编写这样的代码:
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();
}
}
这会崩溃,因为(据我所知 Java)当我在 IMPORTANT_OBJECT
上调用 someMethod()
时,IMPORTANT_OBJECT
实际上是 null - MakeAThing
方法确实创建了一个新对象,但实际上只有它的内部引用(theThing
)引用了新对象。 IMPORTANT_OBJECT
的引用仍然为空。
有什么方法可以编写一个方法来更改 IMPORTANT_OBJECT
的引用以引用新对象?
(是的,我知道一个简单的解决方案是只说 IMPORTANT_OBJECT = new Object();
然后稍后添加参数,但这会使我的代码非常混乱(有很多 "important objects")和如果有另一种方式,我会更喜欢它。)
return new 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();
}
还是我误解了问题?
假设我想在 class 中有一堆私有静态对象,但它们是复杂的对象,我想使用特定的函数用一些参数初始化它们。理想情况下,我会编写这样的代码:
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();
}
}
这会崩溃,因为(据我所知 Java)当我在 IMPORTANT_OBJECT
上调用 someMethod()
时,IMPORTANT_OBJECT
实际上是 null - MakeAThing
方法确实创建了一个新对象,但实际上只有它的内部引用(theThing
)引用了新对象。 IMPORTANT_OBJECT
的引用仍然为空。
有什么方法可以编写一个方法来更改 IMPORTANT_OBJECT
的引用以引用新对象?
(是的,我知道一个简单的解决方案是只说 IMPORTANT_OBJECT = new Object();
然后稍后添加参数,但这会使我的代码非常混乱(有很多 "important objects")和如果有另一种方式,我会更喜欢它。)
return new ComplicatedObject:
函数怎么样private ComplicatedObject MakeAThing(int someInt,int someString){
return new ComplicatedObject(someInt,someString);
}
并且只需在 TestClass 构造函数
中初始化 IMPORTANT_OBJECTpublic TestClass(){
IMPORTANT_OBJECT = (0,"Test");
IMPORTANT_OBJECT.someMethod();
}
还是我误解了问题?