簡體   English   中英

在Java方法中初始化對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM