假設我想在一個類中有一堆私有靜態對象,但它們是複雜的對象,我想用特定的函數用一些參數初始化它們。理想情況下,我會這樣寫代碼:用Java中的方法初始化對象
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)當我打電話someMethod()
上IMPORTANT_OBJECT
,IMPORTANT_OBJECT
實際上是空 - 該MakeAThing
方法確實創造了一個新的對象,但只有其內部參考(theThing
)實際引用了新對象。 IMPORTANT_OBJECT
的參考仍爲空。
有沒有什麼辦法可以編寫一個方法來改變引用IMPORTANT_OBJECT
引用一個新的對象?
(是的,我知道一個簡單的解決方案只是說IMPORTANT_OBJECT = new Object();
,然後再添加參數,但這會使我的代碼非常混亂(有很多「重要對象」),如果有另一種方式,我倒是更喜歡它)
沒有具有參數的「對象」的構造函數。你的問題很不清楚。請更新您的問題以包含[mcve]。即實際編譯的代碼。 –
'private static IMPORTANT_OBJECT;'你需要在編譯時定義一個類型,否則它將不能編譯。 –
此代碼不應該編譯,因爲沒有IMPORT_OBJECT的數據類型 – Sarker