[英]Initializing an object in a method in 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而言),當我在IMPORTANT_OBJECT
上調用someMethod()
時, IMPORTANT_OBJECT
實際上為空MakeAThing
方法確實創建了一個新對象,但只有其內部引用( theThing
)實際引用了該新對象。 IMPORTANT_OBJECT
的引用仍然為空。
有什么辦法可以編寫一種方法來更改IMPORTANT_OBJECT
的引用以引用新對象?
(是的,我知道一個簡單的解決方案是只說IMPORTANT_OBJECT = new Object();
然后在以后添加參數,但這會使我的代碼非常混亂(有許多“重要對象”),如果還有其他我更喜歡的方式。)
返回新的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();
}
還是我誤解了這個問題?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.