我有一个方法需要创建特定类型的对象数组。这是其中的一部分:
public void myMethod() {
for (int i = 0; i < something.length; i++) {
ViewerSorter sorter = new IdeaTableSorter(i);
.....
.....
}
}
我希望此方法能够处理各种 ViewerSorter
对象,而不仅仅是与 IdeaTableSorter
结合使用,但由于我必须创建一堆我想要的这些对象传递对 myMethod
的引用,告诉它要实例化哪个类。
有没有办法在不使用 Reflection API 的情况下做到这一点?
最佳答案
您可以传递一个实例化您的类的Factory
对象。这将是 Abstract factory pattern 。例如:
interface ViewSorterFactory {
ViewSorter create();
}
class IdeaTableSorterFactory implements ViewSorterFactory {
ViewSorter create() { return new IdeaTableSorter(); }
}
class FooTableSorterFactory implements ViewSorterFactory {
ViewSorter create() { return new FooSorter(); }
}
然后:
myMethod(new IdeaTableSorterFactory());
地点:
for (int i = 0; i < something.length; i++) {
ViewerSorter sorter = factory.create();
Class.newInstance()
并不完全是反射 API,尽管我假设您认为此选项是不可取的。但尝试一下 - 这种方法是相同的 - 您传递一个工厂(在本例中为 Class
)并调用一个创建方法 (.newInstance()
)
关于Java - 将类作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736302/