有没有合适的方法将特定的javascript语句翻译成java

Is there a proper way to translate a specific javascript statement to java?

本文关键字:语句 javascript 翻译 java 方法 有没有      更新时间:2023-09-26

我正在将一个程序从JavaScript翻译成Java SE.

我在JavaScript:中找到了这句话

var ROAD = {
  LENGTH: { NONE: 0, SHORT:  25, MEDIUM:  50, LONG:  100 },
  CURVE:  { NONE: 0, EASY:    2, MEDIUM:   4, HARD:    6 }
};

我用以下Java类翻译了它:

public class Road {
public static final LengthLevel LENGTH = new LengthLevel();
public static final CurveLevel CURVE = new CurveLevel();
}
class LengthLevel {
public static final int NONE   = 0,
                        SHORT  = 25,
                        MEDIUM = 50,
                        LONG   = 100;
}
class CurveLevel {
public static final int NONE   = 0,
                        EASY   = 2,
                        MEDIUM = 4,
                        HARD   = 6;
}

我从Netbeans收到了几个警告8:

a) 在类Road中,警告是"通过公共API导出非公共类型"。

b) 在其他地方使用常数时,例如

Road.LENGTH.MEDIUM

警告为"访问静态字段MEDIUM"answers"替换为类引用"。

现在,我明白了这些警告的含义。我知道,如果LengthLevel和CurveLevel都在自己的文件中声明为公共,它们就会消失。

因此,我的具体问题是,是否有一种不那么冗长的方法来翻译原始Javascript语句。

谢谢,

您可以使用enums:

public class Road {
    public enum LENGTH {
        NONE(0), SHORT(25), MEDIUM(50), LONG(100);
        private final int length;
        LENGTH(int length) {
            this.length = length;
        }
        public int getValue() {
            return length;
        }
    }
    public enum CURVE {
        NONE(0), EASY(2), MEDIUM(4), HARD(6);
        private final int curve;
        CURVE(int curve) {
            this.curve = curve;
        }
        public int getValue() {
            return curve;
        }
    }
}

然后,您可以使用以下方法调用访问该值:

        int longLength = Road.LENGTH.LONG.getValue();

我想,如果你真的喜欢以与Javascript中相同的方式引用这些值,你可以做这样的事情(这是否是好的代码是另一个问题):

public class Road {
    public static final _LENGTH LENGTH = new _LENGTH();
    private static class _LENGTH {
        public static final int NONE = 0;
        public static final int SHORT = 25;
        public static final int MEDIUM = 50;
        public static final int LONG = 100;
    }
    public static void main(String[] args) {
        // Example access
        System.out.println(Road.LENGTH.LONG);
    }
}