为什么可以从 public
类中的 public
方法返回一个 private
嵌套类?编译器不应该提示返回类型的可见性低于方法吗?
public final class Outer {
private static final class Configurator {
private Configurator() {
}
}
public static Configurator configure() {
return new Configurator();
}
}
最佳答案
您可以从类外部调用这样的方法,但前提是您愿意丢弃结果。
public class TestClass {
public static void main(String[] args) throws Exception {
Outer.configure(); // this is valid
}
}
或者如果您愿意将结果称为对象
:
public class TestClass {
public static void main(String[] args) throws Exception {
Object o = Outer.configure(); // this is valid
}
}
编译器允许这样做,因为它不违反 Java 的任何规则。 Object
只是您私有(private)类的唯一公开可用的父类(super class)。
我怀疑这种模式有很多实际用途。如果您希望返回一个不透明的对象,最好通过传回一个没有公共(public)方法的公共(public)类来完成,因为您至少可以在将其传回需要使用它的类时对其进行类型检查。
关于java - 公共(public)方法如何返回私有(private)类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26037632/