gpt4 book ai didi

Java/安卓 : Define object with unknown type

转载 作者:行者123 更新时间:2023-11-29 09:35:26 25 4
gpt4 key购买 nike

我正在 Android Studio 中创建游戏。游戏有简单模式和困难模式(分别为 hard=Falsehard=True)。

简单模式和困难模式都有自己的等级。这两个类都包含相同的功能,但它们的实现不同。我正在从我的 Gameplay 类中调用这些类中的函数。这意味着在我的 Gameplay 类中的每个函数中,我必须执行以下操作:

if (hard == True):
HardGameplay gameplayMode = new HardGameplay();
else:
EasyGameplay gameplayMode = new EasyGameplay();

functionResult = gameplayMode.myFunction();

但是,我不想在每个函数中执行此 if-else 检查,我只想检查一次。因此,我创建了一个 checkDifficulty() 函数,我在 onCreate 开始时调用它:

public ??? gameplayMode;
public Boolean easyOrHard() {
if (hard == True):
HardGameplay gameplayMode = new HardGameplay();
else:
EasyGameplay gameplayMode = new EasyGameplay();
}

问题是,我不知道应该在 ??? 处放置什么类型。应该是HardGameplay或者EasyGameplay,但是我事先不知道这两个是哪个。将 Object 放在那里也不起作用,因为那样的话,我调用的每个函数都会给出错误 Cannot resolve method 'myFunction()'

有人知道怎么办吗?或者我忽略了一个更简单的实现?非常感谢任何帮助!

最佳答案

你需要多态性。

因此创建一个名为 GamePlay 的父类(super class),并使 HardGamePlayEasyGamePlay 扩展这些类。该父类(super class)定义了将由其子类实现的功能

public abstract class GamePlay {
public abstract void myFunction();
}

public class HardGamePlay extends GamePlay {
public void myFunction() {
//your code here
}
}

然后就可以使用了

public GamePlay gamePlayMode

在您的 GameActivity 中执行此操作:

Gameplay gameplay = null;
if (hardmode)
gameplay = new HardGamePlay();
else
gameplay = new EasyGamePlay();

关于Java/安卓 : Define object with unknown type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33894587/

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