1

クラスレベルでメソッドを呼び出す方法を教えてください。

以下のようなクラスがあるとします。クラス レベルで test1Method を呼び出すことはできますか? 正しくない場合は理由を教えてください..

class Test2 {

Test1 t1=new Test1();
t1.test1Method();

public void test2Method() {  }

}
4

3 に答える 3

5

いいえ、クラスの直下にメソッド呼び出しステートメントまたはその他のステートメントを含めることはできません。JLS セクション 8 - クラスで指定されているとおり:

クラスの本体は、メンバー (フィールドとメソッド、およびネストされたクラスとインターフェイス)、インスタンスと静的初期化子、およびコンストラクターを宣言します (§8.1.6)。

これらのメンバー(何らかのメソッド)、初期化子、またはコンストラクターのいずれかでメソッド呼び出しを移動する必要があります。

于 2013-08-31T18:04:26.430 に答える
3

インスタンスブロック内で呼び出すことができます

class Test2 {

{
  Test1 t1=new Test1();
  t1.test1Method();
}

}

型のオブジェクトが構築されるたびに、インスタンスまたは初期化ブロックが呼び出されます。Test2JVM は、以下のように、インスタンス ブロックの内容がコンストラクター内にコピーされることを確認します。

class Test2 {

     public Test2() {
        {
           Test1 t1=new Test1();
           t1.test1Method();
       }
     }    

}

OR静的初期化ブロック

class Test2 {

static {
  Test1 t1=new Test1();
  t1.test1Method();
}

}

静的ブロックは、クラスが初めてTest2ロードされるときに実行されます。

于 2013-08-31T18:02:30.080 に答える
1

test1Method メソッドの戻り値の型を制御できる場合は、メソッドで Test1 オブジェクトを返し、以下のようにコードを記述できます。

class Test2 {

Test1 t1=new Test1().test1Method();

public void test2Method() {  }

}
于 2013-08-31T18:14:36.203 に答える