Java,类类型列表

标签 java list class inheritance

我正在开发 Java 应用程序。这是一个抽象类 Model 和 2 个派生类 Model 1 和 Model 2。Model1 和 Model2 的行为不同,所以我想让用户从两者中选择一个模型。 它可以像这样实现:

Model model;
If(response==1){
    model = new Model1();
}else if(response==2){
    model = new Model2();
}

现在的问题是,如果我添加一个新类 Model3,我必须重写代码。 我可以创建一个列表,在其中添加每个类的一个实例,然后添加一个静态方法,该方法将返回该类的一个新实例,但我希望它可以用更多的风格来完成。

是否可以创建一个列表来保存每个类的类型。从这个列表中,我可以创建一个菜单来选择模型,然后使用该类型创建用户需要的类。

那么是否有可能创建一个 List<Class> ,然后使用 Class 对象作为构造函数,创建给定类的实例?

最佳答案

您可以创建 suppliers 的列表:

static final List<Supplier<Model>> MODEL_MAKERS = ImmutableList.of(
    new Supplier<Model>() { public Model get() { return new Model1(); } },
    new Supplier<Model>() { public Model get() { return new Model2(); } },
    new Supplier<Model>() { public Model get() { return new Model3(); } }
);

你可以随意使用反射,但这需要跳出 Java 的正常异常处理机制,需要零参数 public 构造函数和限制代码更改方式的 public 类以未被 javac 检查的方式进行维护,在这种情况下是没有必要的。

关于Java,类类型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9447106/

相关文章:

java - 如果没有运行测试,如何使 Jenkins 构建失败?

java - 执行包含 in 子句的 sqlQuery 时出错

python - 根据另一个排序列表对python中的列表进行排序

Python:为什么我的原始列表在更新复制列表后受到影响

java - 如何以人类可读的方式打开 Java .class 文件?

c++ - 嵌套类的成员函数返回嵌套类的类型

jquery - jQuery 类悖论

java - 从使用 Inno Setup 和 maven 创建的 native javafx 应用程序写入控制台

java - 如何使用拖放功能从多个 ImageView 中选择 ImageView id

python - 在字典列表中查找并更新字典的值