我有这段代码,我想调用数组的特定元素:
public class Game{
...
public final Equipment[] equipment= {new Suit(this), new Sword(this), new Shield(this)};
...
}
通常,您这样称呼它
game.equipment[0]
,但是我想这样称呼它game.equipment[Suit]
。我不想像这样使用吸气剂
public Equipment getSuit() {return equipment[0];}
无法通过Google找到任何内容。
我的主意是
public final Equipment suit = equipment[0];
但是然后我必须使用
game.suit
,但我不想这么做。编辑:谢谢您的回答和帮助。
我的解决方案:
public final Enhancement[] enhancements = {new Suit(this), new Sword(this), new Shield(this)};
public static final int Suit = 0;
public static final int Sword = 1;
public static final int Shield = 2;
在其他课程中,我参考以下内容:
import static pp.frame.model.worlds.GameWorld.Suit;
world.equipment[Suit].apply();
我知道这并不漂亮,但是可以完成工作,而我的教授只希望它看起来像这样。
最佳答案
如果您坚持将设备放置在阵列中,则可以根据具体类型在阵列中搜索套装:
Suit suit = (Suit)
Arrays.stream(equipment)
.filter(equipmentItem -> equipmentItem instanceof Suit)
.findFirst()
.orElse(null);
请注意,如果数组中没有
Suit
,则返回空引用。另外,如果有两个Suit
,则返回第一个。