我有这段代码,我想调用数组的特定元素:

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,则返回第一个。

10-08 18:32