gpt4 book ai didi

java - 代码说明: Enum and Rendering

转载 作者:行者123 更新时间:2023-12-01 17:25:18 25 4
gpt4 key购买 nike

所以我遇到了这段代码,作为一个初学者,我并没有真正理解这段代码。我想知道是否有人可以向我解释代码。谢谢!

private static final EnumMap<State, IRenderer> RENDERERS_MAP;
static {
RENDERERS_MAP= new EnumMap<State, IRenderer>(State.class);

for (State state : State.values()) {
RENDERERS_MAP.put(state, getRender());
}
}

我需要解释的主要是这段代码^代码,因为作为初学者我从未使用过“<>”和“:”。我也不确定 EnumMap 是什么。优选地可以对这一点进行全面详细的解释。什么是 IRenderer?

编辑:我还想知道 <> 和 : 的名称,以便我可以在互联网上搜索并阅读它们。也欢迎链接:)

void render() {
Renderer currentRenderer = RENDERERS_MAP.get(currentState);
if (ren != null) {
currentRenderer.render();
}
}

这是我认为将代码渲染到屏幕上的代码段。

public enum State {
START_MENU() {
@Override
public Renderer getRenderer() {
return new StartMenuRenderer();
}
},
PLAYER_ONE_MENU() {
@Override
public Renderer getRenderer() {
return new PlayerOneRenderer();
}
},
PLAYER_TWO_MENU() {
@Override
public Renderer getRenderer() {
return new PlayerTwoRenderer();
}
},
WIN_SCREEN() {
@Override
public Renderer getRenderer() {
return null; //TODO: implement body
}
},
LOSE_SCREEN() {
@Override
public Renderer getRenderer() {
return null; //TODO: implement body
}
},
PLAY_SCREEN() {
@Override
public Renderer getRenderer() {
return null; //TODO: implement body
}
};

public abstract Renderer getRenderer();
}

这是枚举状态,用于组织游戏中的所有状态。

感谢您的帮助和解释!

最佳答案

It's mainly this piece of code ^ code that i needed an explanation about because as a beginner I've never used "<>" and ":". Also I'm not sure what a EnumMap is. Preferably this one can be explained in full detail.

<>是泛型声明的一部分,只是将您声明的类型与您正在使用的泛型类相关联。对于Map ,有两种类型,KeyValue ,按照惯例声明为 EnumMap<K,V>

所以当你说:

RENDERERS_MAP= new EnumMap<State, IRenderer>(State.class);

您是说您希望创建一个 EnumMap其中Map关键是 State ,以及 Map值为 IRenderer 。一旦您声明了您的特定 EnumMap有了您想要的类型,Java 就会在 Map 上检索或设置值时负责转换。 .

所以你可以说:

IRenderer myRenderer = RENDERERS_MAP.get(myState);

无需显式转换。

关于java - 代码说明: Enum and Rendering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15445734/

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