java - 运行时派生类选择

标签 java

我遇到的情况是我的代码结构如下。

class BaseClass .. 
class DerivedClass1 extends BaseClass ...
class DerivedClass2 extends BaseClass ...
class DerivedClass3 extends BaseClass ...

现在在运行时我想使用任何一个基于整数classId的派生类。

类似于,

BaseClass myObj = new ((classId == 1) ? DerivedClass1 : (classId == 2) ? DerivedClass2 : DerivedClass3

我想要某种随机行为。例如,有时我的应用程序可能会画一条线,而有时它可能会画一个圆。
如何用 Java 编写上述功能?

最佳答案

只需使用多态性和您想要的任何样式(switch/if-else)即可。例如:

基类 myObj;

switch(classId): {
  case 1:
     myObj = new DerivedClass1();
     break;
  case 2:
     myObj = new DerivedClass2();
     break;
  case 3:
     myObj = new DerivedClass3();
     break
  default:
     throw RuntimeException ("Id not recognized);
}
Do something with object;

关于java - 运行时派生类选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821031/

相关文章:

java - Google 应用引擎和 Google 结帐通知错误

java - DBUnit 当前线程被中断

java - 在 OOP 中更新字段

java - 如何访问cache2k的内部状态

java - 迭代字符串列表以获得最短的单词?

java - 如何删除Spring Jpa和Intellij Idea中的数据源警告?

java - 移动javafx应用程序阶段标题文本的位置

java - 使用 swagger2Markup 时出现 NoClassDefFoundError

java - 从文本文件中提取某些值(姓名、电子邮件、电话号码)

java - 如何使用 NGINX 为 J2EE Web 应用程序配置 keycloak?