java - 是否有比使用 if-else 语句(或 switch)更面向对象的方法来选择基于字符串的类?

标签 java oop

我有一个系统,我从外部库接收一个字符串,需要根据该字符串选择一个特定的类。不幸的是,我无法控制收到的字符串。在 Java 中是否有比

更面向对象的方式来做到这一点
if(string.equals(CASE1)){
  return new CaseOneObject();
} else if (string.equals(CASE2)){
  return new CaseTwoObject();
} else if
...

每个字符串对应一个类,但没有可靠的方法从字符串派生类名。

最佳答案

或者将名称或类放在映射中,然后使用字符串作为键来选择它们。

Map<String, Class<?>> classes = new HashMap<String, Class<?>>;
Class<?> aClass = com.github.my.overlong.package.SomeClass.class;
classes.put("silly_string_a", aClass);
/* .... */

关于java - 是否有比使用 if-else 语句(或 switch)更面向对象的方法来选择基于字符串的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5749093/

相关文章:

java - 为什么使用 Tiled 时我的 libgdx 游戏中有线条?

java - 可变类作为不可变类的子类

python - 为什么描述符(在Python中)不能插入(放置)到已经初始化的对象中?

javascript - JavaScript OOP 中什么时候需要使用 "get"关键字

java - 引用变量的封装?

java - 在从扫描仪中提取的整数的最后一位上启动 for 循环(java)

java - 是否可以从嵌套枚举中获取封闭实例?

java - 关于制作某种格式的JAVA GUI的问题

java - JTable重新加载数据

德尔福企业版 : how can I apply the Visitor Pattern without circular references?