如何压缩这些return语句或一起避免checkstyle错误?

Mat*_*att 3 java javafx return checkstyle

目前,我正在为Java类编写打砖块游戏类。我对我的public javafx.scene.paint.Color getColor()方法遇到的一个检查样式错误有疑问,该方法根据被球击中的次数获取砖的颜色。

checkstyle错误说:Return count is 6 (max allowed for non-void methods/lambdas is 2).我认为这意味着我只能有2条返回语句,而我目前只有6条。所有的语句都有不同的返回值,基于这些值this.hits我不了解。其文档如下:

public javafx.scene.paint.Color getColor()

The current color to represent this Brick's breakability state.
Returns:There are five possible Colors that can be returned based on 
theBrick's current strength: Color.BLACK if this Brick cannot be 
broken;Color.WHITE if this Brick has been completely broken; and 
Color.RED, Color.YELLOW,Color.GREEN if this Brick will break after 1, 2, 
and 3 more hits, consecutively.
Run Code Online (Sandbox Code Playgroud)

和代码:

public javafx.scene.paint.Color getColor() {

        if (this.hits == -1) {
            return javafx.scene.paint.Color.BLACK;

        } else if (this.hits == 0) {
            return javafx.scene.paint.Color.TRANSPARENT;

        } else if (this.hits == 1) {
            return javafx.scene.paint.Color.RED;

        } else if (this.hits == 2) {
            return javafx.scene.paint.Color.YELLOW;

        } else if (this.hits == 3) {
            return javafx.scene.paint.Color.GREEN;
        }

        return null;
}
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 7

您可以HashMap<Integer, Color>使用自己的值填充,并使用一次回车操作从中获取值Map。喜欢,

private static Map<Integer, javafx.scene.paint.Color> COLOR_MAP = new HashMap<>();
static {
    COLOR_MAP.put(-1, javafx.scene.paint.Color.BLACK);
    COLOR_MAP.put(0, javafx.scene.paint.Color.TRANSPARENT);
    COLOR_MAP.put(1, javafx.scene.paint.Color.RED);
    COLOR_MAP.put(2, javafx.scene.paint.Color.YELLOW);
    COLOR_MAP.put(3, javafx.scene.paint.Color.GREEN);
}

public javafx.scene.paint.Color getColor() {
    return COLOR_MAP.get(this.hits);
}
Run Code Online (Sandbox Code Playgroud)


c0d*_*der 5

以下方法对一个return语句执行相同的操作:

    public javafx.scene.paint.Color getColor() {

        javafx.scene.paint.Color color = null;

        if (this.hits == -1) {
            color = javafx.scene.paint.Color.BLACK;

        } else if (this.hits == 0) {
            color = javafx.scene.paint.Color.TRANSPARENT;

        } else if (this.hits == 1) {
            color = javafx.scene.paint.Color.RED;

        } else if (this.hits == 2) {
            color = javafx.scene.paint.Color.YELLOW;

        } else if (this.hits == 3) {
           color = javafx.scene.paint.Color.GREEN;
        }

        return color;
 }
Run Code Online (Sandbox Code Playgroud)