1

匿名クラスは次のようなものです。

  SenseOfLife _42 = new SenseOfLife() {
    public int eval() {
       return 42;
    }
  };

このような匿名クラスが無制限の数のインスタンスを持つことができる理由がわかりませんでした (これは命題です)。

この匿名クラスを定義しているときに、インスタンスが自動的に作成され、変数に割り当てられます_42。そのため、インスタンスが 1 つしかなく、新しいインスタンスを作成できません。

4

3 に答える 3

4

次の方法で複数のインスタンスを作成できます。

  • 同じコード ブロックを複数回実行する。
  • 匿名クラスのインスタンスの複製。
于 2013-07-09T18:50:34.613 に答える
2

インターフェイスが拡張されている場合Cloneable、クラスは技術的に複製できます。

リフレクションは新しいインスタンスを取得できます。

同じnew SenseOfLife()コンストラクターがループで呼び出されると、そのコンストラクターは、複数回インスタンス化される 1 つのクラスにコンパイルされます。

于 2013-07-09T18:52:04.397 に答える
1

試したことはありませんが、おそらくリフレクションを使用して他のインスタンスを作成できますinstance.getClass().newInstance()

于 2013-07-09T18:53:35.397 に答える