为什么科特林不允许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
}
我会假设,因为它似乎喜欢做的事情是不是一个真正的情况。 任何访问属性代码, a
将不能访问它的类型。 你不能把它分配给一个变量。 Test.A myVar
在外面声明Test
类会出错误。 通过不允许它,代码将被迫更加一致。 一个更好的问题是为什么Java的允许吗? 其他语言,如迅速,有相同的限制。
https://kotlinlang.org/docs/reference/visibility-modifiers.html#classes-and-interfaces
状态:
注:为Java用户:外类不看它的内部类的私有成员在科特林。
为了您的用例,你可以使用嵌套类
在private inner classes
,你只能够访问外部类的成员。
我认为科特林队实现这种方式,所以这是有可能减少会员的范围private inner classes
是只能访问内部inner class
。 我认为这是不可能在Java中。