相关疑难解决方法(0)

Java内部可见性难题

考虑以下情况:

public class A {
  public A() { b = new B(); }
  B b;
  private class B { }
}
Run Code Online (Sandbox Code Playgroud)

从Eclipse中的警告我引用:java complier通过合成访问器方法模拟构造函数AB().我想编译器现在继续为B创建一个额外的"水下"构造函数.

我觉得这很奇怪:为什么B级不能作为A中的ako场可见?并且:这是否意味着B类在运行时不再是私有的?并且:为什么表示B类的受保护关键字不同?

public class A {
  public A() { b = new B(); }
  B b;
  protected class B { }
}
Run Code Online (Sandbox Code Playgroud)

java inner-classes

10
推荐指数
2
解决办法
1万
查看次数

对象实例化:具有相同名称的内部类和外部类(Java)

代码描述和输出

在以下代码中.我们有一个类TestInners,一个内部类 A,一个方法局部内部类A和一个外A级.

  1. 当我们实例化一个对象时,就像new A().m();输出 中间一样.
  2. 为了让程序输出内部,我们必须在go方法中的方法本地内部类A之后实例化对象.
  3. 如果我们评论内部类,程序将输出外部.

在代码中.为什么输出中间?首先是对内部类的偏好吗?那么外类呢?我很困惑.


源代码

   class A { void m() { System.out.println("outer"); } }

    public class TestInners {
        public static void main(String[] args) {
            new TestInners().go();
        }
        void go() {
            new A().m();
            class A { void m() { System.out.println("inner"); } }

        }
        class A { void m() { System.out.println("middle"); } }
    }
Run Code Online (Sandbox Code Playgroud)

java inner-classes

1
推荐指数
1
解决办法
375
查看次数

标签 统计

inner-classes ×2

java ×2