gpt4 book ai didi

java - 如何限制匿名子类的创建(Java)

转载 作者:行者123 更新时间:2023-11-30 11:59:09 25 4
gpt4 key购买 nike

抱歉,我之前没有正确说明这个问题。我尝试实现工厂模式。一个更好的例子:它是一个带有函数 create 的抽象类 Human。根据传递给 create 的参数,它决定是返回其子类 Man 的实例还是子类 Woman 的实例。所以你调用创建:人类约翰 = Human.create("Man");子类 Man 和 Woman 继承自抽象类 Human,与 Human 定义在同一个文件中。我不希望它可以通过以下方式扩展它: Human lisa = new Human("woman") {}; 来自主程序。谢谢!

编辑:

感谢大家的帮助!我最终使用的解决方案是让类 Human 是 public,以及它的函数 create。 Human 构造函数以及 Man 和 Woman 类被声明为“包保护”。

最佳答案

不要在 A 的类声明中使用可见性说明符,它将是一个包访问类。

编辑以反射(reflect)问题中的变化:

选项 1:将 Human 包的构造函数设为私有(private)。通过这样做,任何试图在包外扩展 Human 的类都将失败,因为它无法调用父类(super class)的构造函数。

选项 2:坚持我最初关于包私有(private)类的建议,改用公共(public)访问工厂类。

关于java - 如何限制匿名子类的创建(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2692343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com