-1

我正在使用play framework 1.2.x构建一个类。IllegalAccessException内部类的公共属性

我有一个Controller类,其中包含一个非匿名(命名)私人内部类。

当我试图通过其构造来访问内部类的公共领域之一,我得到以下错误NonAnonymous Inner class access exception

上面的代码

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);   
    } 
} 

我不明白的逻辑,怎么这甚至有可能吗?我在构造函数中访问一个类的属性访问说明符如何起作用?

我试过搜索并找到了this article,但它涉及到匿名的内部类,建议的解决方案是将匿名内部类作为命名类。

声明

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

代码难以辨认。请以格式文本的形式在此发布。 – EJP

+0

好了添加了代码作为格式文本 – Gautam

+1

问题是什么问题,为什么-1? – Gautam

回答

1

静态类是私有的,所以只有外部类可以访问它的成员,无论是公众还是不行。

我看不到任何证据在您的不可识别的图形中,访问发生在静态类自己的构造函数中。看起来,我更像是一个外部班级试图访问班级的内脏。

注意:这不是内部类,因为它是静态的。

+0

我无法让页面上的图像更大,请点击它,它会打开完整大小的图像。 – Gautam

+0

@GautamK好的,我做到了。它只是证实了我的答案。你在这里问错了问题。 – EJP

+0

'financialTransactions'是内部类的'public'' final'属性,我正在从内部类的构造函数中访问它,现在出了什么问题? – Gautam