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