0

我是一名在课堂上学习安卓的 11 年级学生。

我有一些代码可以创建随机游戏对象、路径或道路的 LinkedList,在这种情况下,道路扩展了路径,我将对此类树进行更多扩展......

我使用了一个我发现的加权随机器类。这个类需要一个权重和一个对象并将其放入对象池中以从中获取随机对象,问题是我想扩展类树而不需要扩展代码,本质上我需要一种获取输出对象的方法并创建一个相同类型的对象。

道路和路径的属性在创建时是随机的,所以我只需要知道它的类型。

这是我现在如何发生的示例代码:

    pathList = new LinkedList<>();

    for (int i = 0; i < 20; i++)
    {
        pathList.add(new Path(pathRandomizer.getRandom()));
    }

pathRandomizer 是 WeightedRandomizer 的一个实例。正如你所看到的,由于我创建新对象的方式,这显然总是指向一个 Path 对象。

这是我的目标,但使用了 WeightedRandomizer 类和一种简单的扩展方法:

    Path p;
    for (int i = 0; i < 20; i++)
    {
        int randomX = random.nextInt(2);
        if (randomX < 1)
            p = new Path();
        else
            p = new Road();
         pathList.add(p);
    }

我希望这是半可以理解的,请给我您的意见,说明如何获取对象的输出并使用复制构造函数创建一个新对象,以免它们指向原始的 WeightedRandomizer 对象。

我不想这样做:

Path p = pathRandomizer.getRandom();

提前致谢 :)

4

0 回答 0