gpt4 book ai didi

java - 初始化由函数 Java for android 检索的类

转载 作者:行者123 更新时间:2023-11-30 02:28:31 25 4
gpt4 key购买 nike

我关于 stackoverflow 的第一个问题:

好的,所以我正在为 android 编写一个 java 游戏,但我在初始化从函数/方法检索到的某些类时遇到了麻烦。这是我的代码:

static int unUsedCharacters = 10;
static Character char1;
static Character char2;
static Character char3;
static Character char4;
static Character char5;
static Character char6;
static Character char7;
static Character char8;
static Character char9;
static Character char10;

Character getFreeCharacter() {
if (char1 == new Character()) {
return char1;
} else if (char2 == new Character()) {
return char2;
// and so on... until 10
} else {
return char10;
}
}

public void createCharacter(String x) {
if (unUsedCharacters > 0) {
unUsedCharacters -= 1;
getFreeCharacter() = new Warrior();
//the warrior class extends the character class
} else {
/* no more characters */
}
}

所以问题是我尝试做的地方:

    getFreeCharacter() = new Warrior();

它说:

Variable expected.

有什么建议吗?(这可能 super 简单,但这对我来说是全新的)

感谢您阅读/回复

最佳答案

这种形式的表达...

 (char1 == new Character())

...将总是评估为false(或抛出异常)。 new 运算符永远不会产生 null 结果,也永远不会产生对之前存在的对象的引用,但是这些替代方案涵盖了 char1< 的所有可能值 在任何时候。您更有可能想要这样的东西:

if (char1 == null) {
char1 = new Character();
return char1;
}

但事实上,我永远不会把十个字符放在十个自变量中。我可能会使用 CharacterList,或者在最坏的情况下使用数组。

已经过去了,你有一个不同的问题。您返回的 Character 已经是分配给预期插槽的对象。您可以设置它的属性(在其类允许您这样做的范围内),但您不能通过分配给它来用不同的对象替换它。事实上,您根本无法直接对方法结果进行赋值,但即使将其存储在变量中,将不同的对象赋值给该变量也不会产生您想要的效果。

(请注意,顺便说一句,我要区分分配给方法返回值的成员,你可以这样做,和分配给值本身,你不能这样做。)

我认为您最好完全摆脱 getFreeCharacter()。如果你更好地构建你的类,那么你将不需要它。而不是像这样声明 char1 ... char10:

// Yuck, don't do this
Character char1;
Character char2;
// ...
Character char1;

...按照我之前的建议做,使用List:

import java.util.ArrayList;
import java.util.List;

public MyGame {

List<Character> characters = new ArrayList<>();

// ...

}

然后,您的 createCharacter() 方法可以采用以下形式:

public void createCharacter(String x) {
if (characters.size() < 10) {
characters.add(new Warrior());
} else {
/* no more characters */
}
}

在其他地方,您可以通过其 get() 方法检索字符列表的元素,例如characters.get(0)List 实例负责处理大量细节,否则您将不得不为其编写自己的代码。

关于java - 初始化由函数 Java for android 检索的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27608536/

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