微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果我的班级有很多孩子,我如何初始化一个对象,该对象是我班级的随机孩子?

如何解决如果我的班级有很多孩子,我如何初始化一个对象,该对象是我班级的随机孩子?

例如。

父级:车辆 儿童:汽车、火车、马

我想做以下事情

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 举报,一经查实,本站将立刻删除。