我对Java对象副本和继承感到好奇。可以说我有以下两个课程:
abstract class Algorithm {
public abstract void run();
}
class Specialized extends Algorithm {
@Override
public void run();
}
现在我要测试专用算法。我真的想与多个实例/参数并行执行此操作。问题是
run
方法不是可重入的,因此我必须具有Specialized
的每线程实例。当然,任何类型的AlgorithmRunner
都应与抽象类Algorithm
配合使用,以便能够测试多个不同的专业化知识。问题是我需要以通用方式从现有的? extends Algorithm
构造一个新的instanceof
。我该如何实现?我可以轻松地为每种专业化编写副本构造函数,但是这需要使用检查进行切换,而我宁愿避免这样做。 最佳答案
您可以尝试使用Factory pattern:
interface AlgorithmFactory {
public abstract Algorithm createAlgorithm();
}
class SpecializedFactory implements AlgorithmFactory {
@Override
public Specialized createAlgorithm() {
return new Specialized();
}
}
然后将AlgorithmFactory传递给AlgorithmRunner,使其可以在不知道其实现的情况下实例化Algorithm的子类。
关于java - 复制构造函数和继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29895198/