-1
Project sample = new Project();

これは、タイプ プロジェクトの変数サンプルを作成し、オブジェクトを作成してそれを変数に割り当てることを意味します。

以下のコードはどういう意味ですか

 Project sample = new Project() {

  private void Test(){

   }

}

テストはメソッドです. このコードの意味は何ですか. Test() はどのように呼び出すことができますか?

ありがとう

4

4 に答える 4

5

これ:

  1. の匿名サブクラスを作成しProjectます。
  2. そのクラス内で、呼び出される新しいメソッドを作成しますTest()(他の状況ではこれはオーバーライドになる可能性がありますが、ここではオーバーライドできません)。
  3. このサブクラスのインスタンスを作成します。
  4. インスタンス参照を に割り当てますsample

Test()であるprivateため、それを呼び出す唯一の方法は、匿名サブクラスの別のメソッドからです。他にメソッドがないため、 を呼び出す方法はありませんTest()

于 2012-12-16T12:47:47.060 に答える
1
Project sample = new Project() {

  private void Test(){

   }

}

new匿名オブジェクトを返す Project を拡張する匿名クラスを作成するだけです。メソッドは、新しく定義されたインスタンス メソッドまたは (メソッドがある場合はオーバーライドされます)
のいずれかです。TestProjectTest

于 2012-12-16T12:48:02.080 に答える
0

他の回答に加えて。この種の匿名クラスは、クラスを実装interfaceまたは拡張するときに非常に役立ちますabstract。例えば:

public interface MyInterface {
    public void doStuff();
}

そして、ここにあなたの実装があります:

MyInterface myInterface = new MyInterface() {

    public void doStuff() {
        //here is your implementation
    }

    public void doAnotherStuff() {
        //Note that this method is public, but
        //you're still not able to call it from outside of this class
        //because it's not part of MyInterface's contract
    }
};

この行でエラーが発生します。

myInterface.doAnotherStuff(); //WTF? I don't know about this method of MyInterface
于 2012-12-16T12:55:30.153 に答える
0

あなたが提示したコードは匿名クラスの例です。

プライベート メソッドを宣言しているため、そのクラス内からのみアクセスできます。

このタイプの構築は、一般に、クラスの動作を局所的に変更するために使用されます。通常、単純なインターフェイスを実装するために使用されます。そのため、いくつかの操作を委任できます。

于 2012-12-16T12:58:52.460 に答える