所以我把Enum叫做Terrain

public enum Terrain {
    DIRT(4, "res/imgs/DirtTile.png"), GRASS(5, "res/imgs/GrassTile.png");

    private String filePath;
    private Image image;
    private boolean imageLoaded;
    private int value;

    Terrain(int val, String imagePath) {
        value = val;
        filePath = imagePath;
        imageLoaded = false;
    }

    public Image getImage() {
        if (!imageLoaded) {
            loadImage();
        }
        return image;

    }

    public void loadImage() {
        try {
            image = ImageIO.read(new File(filePath));
        } catch (IOException e) {
            System.err.println("Failed to load image!");
            e.printStackTrace();
        }
        imageLoaded = true;
    }
}


我想要的是能够将一个int与terrain值进行比较,以便如果相等,则将地形绘制到屏幕上。

我在想类似

if(int==Terrain.value){}


但是我不太确定如何去做。如果有人可以帮我解决这个问题,我有一个int数组,我想将其与之比较;如果它确实等于该值,则将该图块存储在单独的图像数组中。

编辑:

对于所有说我应该使用getValue()方法的人,我想将我的值与所有Enums值进行比较,如果它等于(例如,等于4,则可以将我的图像设置为(污垢))。

我正在其他班级进行检查。

最佳答案

一种可能性是向Terrain枚举添加静态函数,如下所示:

static Terrain getTerrainFor(int val)
{
   for (Terrain t : Terrain.values())
   {
      if (t.value() == val)
         return t;
   }

   return t;
}


称之为(Terrain.getTerrainFor(int))做逻辑

08-05 21:08