如何为java.awt.Color做出switch语句

时间:2019-04-03 13:12:47

标签: java colors switch-statement

因此,我正在做一个小型Java游戏,作为一个学校项目,想返回一个图像,该图像应该在HashMap中。在我调用的方法中,我想提供一个java.awt.Color作为参数,并在其上做出switch语句。

(注意:进入该功能的所有颜色均为默认颜色,例如“ Color.red”或“ Color.green”!)

我已经尝试使用Color的RGB值来做到这一点,但这不起作用。

在此不工作代码:

   private static HashMap<Color, Image> blocks_hash;

    public static void setBlock(Color color, Image image) { blocks_hash.put(color, image); }

    public static Image getBlock(Color color) {
        if(blocks_hash.containsKey(color))
            return blocks_hash.get(color);
        else
            switch (color.getRGB()) {
                case Color.red.getRGB():
                    return getBlocks().getSubimage(0, 0, 60, 60);
            }
        return null;
    }

1 个答案:

答案 0 :(得分:0)

您无法制作开关盒,因为它已经是常数,请参见here

您可以将颜色更改为枚举字段

class newClass {
 enum Colors {RED,GREEN,BLACK}

 public static Image getBlock(Colors colors) {
    switch (colors){
        case BLACK:
            System.out.println("BLACK");;
            break;
        case GREEN:
            System.out.println("GREEN");;
            break;
        case RED:
            System.out.println("RED");
            break;
            default:
                System.out.println("non color");
    }
}

PS 没有开关盒

class newClass {
 enum Colors {RED,GREEN,BLACK}

 public static Image getBlock(Colors colors) {

    if(colors==BLACK){
      System.out.println("BLACK");
}else if(colors==GREEN){
      System.out.println("GREEN");
}else if(colors==RED){
      System.out.println("RED");
}else
      System.out.println("non color");
    }
}

并应用您的代码

public static Image getBlock(Color color) {
    if (blocks_hash.containsKey(color)) {
        if (color == Color.BLACK) {
            System.out.println("Black");
        } else if (color == Color.CYAN) {
            System.out.println("CYAN");
        }
    } else {
        System.out.println("non color");
    }
    return null;
}