如何解决如果我的班级有很多孩子,我如何初始化一个对象,该对象是我班级的随机孩子?
例如。
父级:车辆 儿童:汽车、火车、马
我想做以下事情
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 链或开关会很痛苦。有没有办法只在一行中完成?
解决方法
我推荐以下内容:
class VehicleFactory {
private final List<Supplier<Vehicle>> constructors = new ArrayList<>();
public void addConstructors(Supplier<Vehicle>... constructors) {
this.constructors.addAll(Arrays.asList(constructors));
}
public Vehicle make() {
return constructors.get(random.nextInt(constructors.size()).get();
}
}
然后当您想开始制造车辆时:
VehicleFactory factory = new VehicleFactor();
factory.addConstructora(Car::new,Horse::new,Bike::new);
Vehicle randomVehicle = factory.make();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。