【发布时间】:2021-03-29 11:57:05
【问题描述】:
例如。
父级:车辆 儿童:汽车、火车、马
我想做以下事情
Vehicle randVehicle = new RandomeVehicleChildObject;
我想我可以这样做:
Vehicle randVehicle;
Random r = new Random();
int x = r.nextInt();
if(x == someInt)
randVehicle = new Car();
else if(x == otherNum)
randVehicle = new Train();
else
randVehicle = new Horse();
但是,如果我的班级有更多孩子怎么办?比如15还是20?我觉得写这么多 if-else 链或开关会很痛苦。有没有办法只用一行来完成?
【问题讨论】:
-
你为什么想要一个随机选择的子类的实例?你实际上想做什么?
-
@Bohemian 好吧,例如。当你在 RPG 中制作一个新角色时,你必须选择一个起始职业:法师、战士、盗贼等。但也许你并不真正关心初始职业是什么,所以你选择“随机”按钮,然后该程序会随机为您分配一个具有其各自属性的类。
-
@BasilBourque getting the known subclasses 是反射操作。它不保证返回的类具有合适的构造函数或完全可实例化,即它们可能是抽象或枚举等。如果您想要一种机制来可靠地获取给定类型的实例提供者,则必须使用(模块化)服务提供者架构。对于模块化代码,编译器已经检查了
uses和provides指令的有效性。
标签: java class random children java-15