クラス内にプライベートな静的オブジェクトがたくさんあるとしますが、それらは複雑なオブジェクトであり、特定の関数を使用していくつかのパラメータで初期化したいと考えています。理想的には、私はこのようなコードを記述します。(私の知る限りのJavaを理解したように)私はIMPORTANT_OBJECT
にsomeMethod()
を呼び出すとき、IMPORTANT_OBJECT
が実際にnullであるため、これがクラッシュします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();
}
}
を - MakeAThing
方法は、新しいオブジェクトを作成しましたが、その内部参照(theThing
)のみが実際に新しいオブジェクトを参照しました。 IMPORTANT_OBJECT
の参照はまだnullです。
IMPORTANT_OBJECT
の参照を新しいオブジェクトの参照に変更する方法はありますか?
(はい、簡単な解決策はIMPORTANT_OBJECT = new Object();
とし、後でパラメータを追加することがわかりますが、これによってコードが実際に乱雑になります(重要なオブジェクトが多数あります)。 。「NEW ComplicatedObjectを返す機能についてどのように
パラメータを持つ 'Object'のコンストラクタはありません。あなたの質問は非常に不明です。質問を更新して[mcve]を追加してください。私。実際にコンパイルされるコード –
'private static IMPORTANT_OBJECT;'コンパイル時に型を定義する必要があります。それ以外の場合はコンパイルされません。 –
このコードはコンパイルしないでください。IMPORT_OBJECTのデータ型がないため、 – Sarker