Java 防止jar用户创建公共类的对象
我有一个公共类,其唯一的公共函数返回对象上的迭代器:Java 防止jar用户创建公共类的对象,java,oop,instantiation,Java,Oop,Instantiation,我有一个公共类,其唯一的公共函数返回对象上的迭代器: public class WikiExtractor implements Iterable<WikiPage>{ ... public Iterator startExtraction() { Thread executor = new Thread(() -> startExtraction_0()); executor.start(); return new Wik
public class WikiExtractor implements Iterable<WikiPage>{
...
public Iterator startExtraction() {
Thread executor = new Thread(() -> startExtraction_0());
executor.start();
return new WikiIterator();
}
...
}
公共类WikiExtractor实现Iterable{
...
公共迭代器startExtraction(){
线程执行器=新线程(()->startExtraction_0());
executor.start();
返回新的WikiIterator();
}
...
}
现在WikiPage类是另一个包中的公共类。如何防止用户创建WikiPage的对象?将WikiPage放在同一个包中并使其私有化是唯一的选择吗?从我的头上往下看-您可以使构造函数
私有化或受保护
,然后使用工厂模式控制谁可以创建它。另一个解决方案是使WikiPage
成为接口
,并使用工厂模式创建物理实现。。。作为两个想法,您可能可以使用Java平台模块系统(JPMS),将WikiPage
放在同一个包中,并将其构造函数包私有化将是迄今为止最简单的选择。