我的代码中有内部类。我想让公共访问它的实例,但只有外部类应该能够创建这个实例,就像在“私有”访问中一样。如果没有制作适当的小包装(或者为每个这样的内部类别创建公共接口),有没有可能?Java - 内部类构造函数 - 只允许外部类
(很抱歉,如果我的英文不好:P)
我的代码中有内部类。我想让公共访问它的实例,但只有外部类应该能够创建这个实例,就像在“私有”访问中一样。如果没有制作适当的小包装(或者为每个这样的内部类别创建公共接口),有没有可能?Java - 内部类构造函数 - 只允许外部类
(很抱歉,如果我的英文不好:P)
这是可能的。声明你的内部类公共,但它的构造函数私人。这样,您只能在封闭类和本身内部创建它,而不能从外部创建它。
默认情况下,如果你想获得你需要先有外部类的内部类的实例。
A inner class是其封闭类的成员。
您无需为此做任何事情。
非静态内部类(内部类)可以访问外部类中的其他成员,即使它们被声明为private
我希望我理解你的问题的正确途径。
构造应仅用于外部类(因此不能是公开的)是可用的,但它应该是可以使用该对象不在外面(所以班级不能是私人的)。 –
所以制作内部类private
。
public class Outer {
private class Inner {}
public String foo() {
return new Inner().toString();
}
}
你不能合法调用私有的默认构造函数,因为它是私人
当Inner是私人的,我不能使用这个外面。我可以为这个类创建特定的公共接口,但是我想避免这个解决方案,如果有更好的解决方案。 –
它是你这个问题的解决方案'只有外部类应该能够创建这个实例'。你能否详细说明你的问题你真的想要什么!不清楚。 – iMBMT
只有'Outer'对象才能访问构造'Inner'的实例。现在清楚吗?对不起:) –
真的外面的类可以访问内部类的私有字段吗?很高兴知道它是否有效,谢谢! –
那么这个解决方案是错误的? –
不,这个解决方案是正确的,外部类可以看到内部类的所有私有字段,方法和构造函数。 – WilQu