-1

Play フレームワーク 1.2.x を使用してクラスを構築していました。

非匿名の(名前付き)プライベート内部クラスを含む Controller クラスがあります。

コンストラクターを介して内部クラスのパブリック フィールドの 1 つにアクセスしようとすると、次のエラーが発生します。NonAnonymous 内部クラス アクセス例外

上記のコード

private static class FinancialTransactionJSONPacket implements JSONPacket{
    public final boolean isSuccess;
    public final List<FinancialTransaction> financialTransactions;
    public final  OPERATIONS operation;

    public FinancialTransactionJSONPacket(boolean isSuccess,FinancialTransaction financialTransaction,OPERATIONS operation) {           
        this(isSuccess,new ArrayList<FinancialTransaction>(),operation);
/* Line 43 */   this.financialTransactions.add(financialTransaction);           
    }
}

ロジックがわかりません。これはどのように可能ですか? コンストラクター内からクラスの属性にアクセスしていますが、アクセス指定子はどのように重要ですか?

検索してみたところ、この記事を見つけましたが、匿名の内部クラスに関連しており、提案された解決策は、匿名の内部クラスを名前付きクラスにすることです。

宣言

  • public final List<FinancialTransaction> financialTransactions;
  • private static class FinancialTransactionJSONPacket
4

1 に答える 1

1

静的クラスはプライベートであるため、パブリックかどうかに関係なく、外側のクラスのみがそのメンバーにアクセスできます。

アクセスが静的クラス自体のコンストラクター内で行われているという判読不能なグラフィックには証拠がありません。外部クラスがクラスの内部にアクセスしようとしているように見えます。

注: これは静的であるため、内部クラスではありません。

于 2012-05-22T06:37:50.360 に答える