Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止jar用户创建公共类的对象_Java_Oop_Instantiation - Fatal编程技术网

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
放在同一个包中,并将其构造函数包私有化将是迄今为止最简单的选择。