在创建私有科特林内部类的公共实例(Creating public instance of priva

2019-09-28 05:58发布

为什么科特林不允许Java不同私有内部类的公共实例的创建?

作品在Java中:

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

  private class A {
  }
}

在科特林不起作用( A类必须是public ):

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

    private inner class A
}

Answer 1:

我会假设,因为它似乎喜欢做的事情是不是一个真正的情况。 任何访问属性代码, a将不能访问它的类型。 你不能把它分配给一个变量。 Test.A myVar在外面声明Test类会出错误。 通过不允许它,代码将被迫更加一致。 一个更好的问题是为什么Java的允许吗? 其他语言,如迅速,有相同的限制。



Answer 2:

https://kotlinlang.org/docs/reference/visibility-modifiers.html#classes-and-interfaces

状态:

注:为Java用户:外类不看它的内部类的私有成员在科特林。

为了您的用例,你可以使用嵌套类

private inner classes ,你只能够访问外部类的成员。

我认为科特林队实现这种方式,所以这是有可能减少会员的范围private inner classes是只能访问内部inner class 。 我认为这是不可能在Java中。



文章来源: Creating public instance of private inner class in Kotlin
标签: kotlin