Java - 将类作为参数传递

标签 java

我有一个方法需要创建特定类型的对象数组。这是其中的一部分:

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/

相关文章:

java - Android SpannableString(Builder) 不应用样式

java - 如何使用 .contains 方法检查整数值是否在二维数组中?

java - ActionListener 未附加到 jbutton?

java - 关于java按值传递的澄清

java - 无法将文件内容正确保存到 HashMap 中

java - 如何在 GreenDao 中更新为 "UPDATE table SET col1=' val 1'"

java - 3 月 30 日星期五 :00:00 CET 14 to dd/mm/yyyy

java - 在 GeoTools 中使用纬度经度绘制一条线

java - 在 Java 中写入二进制文件

java - tomcat-maven-插件 401 。显示不同的端口号时出错