【问题标题】:Access from Class C to value from inner Class B of Class A从 C 类访问 A 类内部 B 类的值
【发布时间】:2018-10-09 13:31:21
【问题描述】:

我不明白为什么我什至不能创建一个新实例,IDE 将内部类名标记为未分配

public class WbXLS {

  class XlsCell {
    public String getxlsCell(HSSFSheet sheet, String strCellValue) {

    }
  }
}

试过了,没有成功

WbXLS.XlsCell xlscell = new wbXLS.new XlsCell();

我创建了内部类以从方法中获取返回值并在另一个类中使用它。我这样做对吗?

【问题讨论】:

  • 这实际上编译?? wbXLS.XlsCell xlscell = 新 wbXLS.new XlsCell ();尝试将嵌套类设为静态,然后 -> new WbXLS.XlsCell();
  • @Stultuske 这是一个问题,我需要一个内部类,而不是嵌套的。在外部类中,我使用 xls 工作簿 '...main void' 并且内部类没有嵌套,因为我认为它只有在完全访问外部类的情况下才能工作。
  • 内部类是(非静态)嵌套类
  • @Stultuske,禁止使用静态。我试过了,语法错误..

标签: java class methods


【解决方案1】:

我认为您可能缺少括号。这为我编译:

WbXLS.XlsCell xlscell = new WbXLS().new XlsCell();

【讨论】:

    【解决方案2】:

    每个 XlsCell 对象都有一个 WbXLS.this :对它所在的对象容器的引用。

    所以括号不见了:

    WbXLS.XlsCell xlscell = new WbXLS().new XlsCell();
    

    但实际上你可能想要:

    WbXLS workbook = new WbXLS();
    WbXLS.XlsCell xlscell = workbook.new XlsCell();
    

    然后用一个工作簿实例做一些事情。 (可以为其创建多个单元格。)

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多