gpt4 book ai didi

java - 返回一个稍后创建的类

转载 作者:行者123 更新时间:2023-11-30 07:37:55 25 4
gpt4 key购买 nike

目前,我正在将一个游戏从 Python 迁移到 Java。在其中,我创建了一个生成器,它返回一个“类”,该“类”将使用调用者拥有的参数创建,如下所示:

package me.mathmaniac.smallworlds.world.generation;



import me.mathmaniac.smallworlds.block.Block;
import me.mathmaniac.smallworlds.block.NullBlock;
import me.mathmaniac.smallworlds.world.LayerType;

public class FlatGenerator implements Generator {

@Override
public Block generateBlock(LayerType ltype, int x, int y) {
switch (ltype) {
case Liquid:
return HoleBlock;
case Solid:
return GrassBlock;
case Air:
return AirBlock;
default:
throw new RuntimeException();
}
}

}

从这里调用:

package me.mathmaniac.smallworlds.world;

import me.mathmaniac.smallworlds.block.Block;
import me.mathmaniac.smallworlds.world.generation.Generator;

public class World {

Generator generator = ...;

// ...

private void generateBlocks(int x, int y) {
for (LayerType ltype : LayerType.values())

setblock(generator.generateBlock(ltype, x, y).new(x, y, ltype), //.new() is as an example
x, y, ltype);
}

}

我如何在 Java 中完成这个任务?

最佳答案

您想要使用Factory Pattern

您将有几个类:一个抽象类Block(或一个接口(interface))和工厂类BlockFactory(或者如您所说,FlatGenerator)。

如果有许多函数可以在所有 Block 类型中具有相同的实现,则将基类 Block 设为抽象类并将这些方法放入其中。否则,您可以使用接口(interface)。

关于java - 返回一个稍后创建的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35121642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com