Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Kotlin中创建私有内部类的公共实例_Kotlin - Fatal编程技术网

在Kotlin中创建私有内部类的公共实例

在Kotlin中创建私有内部类的公共实例,kotlin,Kotlin,为什么Kotlin不像Java那样允许创建私有内部类的公共实例 在Java中工作: public class Test { public A a = new A(); private class A { } } 在Kotlin中不起作用(A类必须是public): 我会这样假设,因为实际上没有一个案例是这样做的。任何访问属性a的代码都无权访问其类型。无法将其分配给变量测试。类之外的myVar声明将出错。如果不允许,代码将被迫更加一致。一个更好的问题是为什么Java会允许它?其他语

为什么Kotlin不像Java那样允许创建私有内部类的公共实例

在Java中工作:

public class Test {
  public A a = new A();

  private class A {
  }
}
在Kotlin中不起作用(
A
类必须是
public
):


我会这样假设,因为实际上没有一个案例是这样做的。任何访问属性
a
的代码都无权访问其类型。无法将其分配给变量<代码>测试。类之外的myVar声明将出错。如果不允许,代码将被迫更加一致。一个更好的问题是为什么Java会允许它?其他语言,如swift,也有同样的限制。

国家:

Java用户注意:外部类在Kotlin中看不到其内部类的私有成员

对于您的用例,您可以使用

私有内部类中
只能访问外部类的成员

我认为kotlin团队以这种方式实现了它,这样就可以减少
私有内部类
中成员的范围,使其只能在
内部类
中访问。我认为这在Java中是不可能的

class Test {
    var a = A()
//      ^  
// 'public' property exposes its private type 'A'

    private inner class A
}