gpt4 book ai didi

java - 如何防止具体类的实例化?

转载 作者:行者123 更新时间:2023-11-30 03:57:35 27 4
gpt4 key购买 nike

假设我有一个 Record 接口(interface),并且我可以拥有 N 个具体实现类,例如。 PropertyRecordsLoanRecords 等。如何确保这 N 个类中没有对象是客户端使用 new 关键字创建的?

如果我有一个子类,这很容易;我可以将所有构造函数包私有(private);这样我就可以在同一个包中编写一个 Factory 类,该类将有一个负责的方法用于创建实例。但是如何创建一个能够创建单个接口(interface)或抽象类的多个实现的虚拟工厂

希望我能够正确地表达自己。请询问是否需要任何澄清。

谢谢。

最佳答案

不知道为什么你会想要这个,但你的 Factory 类可以使用反射来创建这样的实例:

public class RecordFactory {
public Record newInstance(Class<? extends Record> klass, Object... args) {
Constructor[] ctors = klass.getDeclaredConstructors();
// find the right constructor here..
return ctor.newInstance(args);
}
}

然后您的客户可以创建如下实例:

RecordFactory.newInstance(Loan.class, ...);

关于java - 如何防止具体类的实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758715/

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