【问题标题】:Access inner class private vars from outer class从外部类访问内部类私有变量
【发布时间】:2013-04-13 10:10:29
【问题描述】:

我正在尝试从外部类访问内部类内部的私有 val,而不创建内部类的实例。

这甚至可以从the outer class 访问private inner class 值吗?

提前致谢。

【问题讨论】:

  • 如果它是一个实例变量,那么你需要...一个实例。

标签: java inner-classes outer-classes


【解决方案1】:

如果字段是static,即使它是private,您已经可以从外部类访问它。您不需要内部或外部类的实例:

public class Clazz {
    class Inner {
        private static final int N = 10;
    }
    public static void main(String[] args) {
        System.out.println(Inner.N);
    }
}

如果内部类字段不是static,那么如果没有内部类的实例,它就不会存在。你不能访问不存在的东西。

【讨论】:

  • [code] System.out.println("Details for computer"+this.serial_number+" "+new Video_Card (serial_number*100)) [/code] 我试过这个但出于某种原因它打印出以下内容:computer400 il.ac.shenkar.rec.Computer$Video_Card@67b56bda 的详细信息 computer400 il.ac.shenkar.rec.Computer$Video_Card@37bbea67 的详细信息
【解决方案2】:

简短的回答是否定的。

更长的答案如下。内部类只是一个常规类,它具有对其外部类的 instance 的“神奇”引用,可以通过OuterClass.this 访问。创建外部类的实例不会自动创建内部类的实例。这意味着除非内部类本身及其成员是static,否则您不能在不创建内部类实例的情况下从外部类访问内部类的成员。

实际上,您可以创建一个外部类实例和 10 个相应内部类实例。如何在不创建实例的情况下访问内部类的成员?

顺便说一句,一般建议:避免创建内部类,除非你真的需要它们。

【讨论】:

  • 您能否详细说明“避免创建内部类,除非您确实需要它们”的建议?
猜你喜欢
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 2021-01-05
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
相关资源
最近更新 更多