java - 为什么我们不能在方法内部声明私有(private)局部内部类?

标签 java class

class outer
{
    public void outerfunction()
    {

        private class inner // Line-1
        {
                public void showinner()
                {
                    System.out.println("I am in Inner Class");

                }

        }

    }
}

第 1 行:此行出错。

我知道我是否为类内部写摘要或最终。那么,没关系。为什么类内部不能是私有(private)的?

最佳答案

private 类对同一文件中的所有方法和嵌套类都是可见的。通常您会认为 private 缩小了使用范围,但在这种情况下,使用 private扩大了类的可见范围,Java 不可见'支持。

将方法设为私有(private)与这样做是一样的

class outer {
      private class inner { // Line-1
          public void showinner() {
              System.out.println("I am in Inner Class");    
          }
      }

      public void outerfunction() {    

     }
}

这看起来不错,直到您认为嵌套类可以使用其外部上下文中的值。

class outer {
    public void printInner() {
        // accessible in the same .java file because we made it private
        inner i = new inner();
        i.showInner(); // what should `x` be?
    }

    public void outerfunction(final int x) {    
         private class inner { // Line-1
              public void showinner() {
                  System.out.println("I am in Inner Class, x= " + x);    
              }
          }    
    }
}

关于java - 为什么我们不能在方法内部声明私有(private)局部内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24400736/

相关文章:

java - !array[0].isEmpty() 返回 NullPointer?

java - 我不断收到 [Ljava.lang.Object;无法转换为 [Ljava.lang.Comparable 错误

java - 类似的 while 循环和 do while 循环之间的输出差异?

c++ - 尝试在类定义中声明数组时出错

C++ - 包含 3 个元素的列表的类

java - Dagger 2 : avoid exporting private dependencies

java - 如何修复 Android 错误“类 Context 中的方法 openFileInput 无法应用于给定类型;2

C++ 使用类作为变量

android - 创建一个扩展 API 25+ 资源的类

c++ - 是否可以从类创建多维数组?