尝试将小的JavaScript代码转换为Java

时间:2019-02-26 11:35:51

标签: javascript java

我有这个来自javascript的代码段(我不熟悉),但是我需要这个东西来传递我的java方法之一

  example.setChoices([{ value : 'One', label : 'Label One', disabled : true }], 'value', 'label', false);

我正在研究w3schools和其他JavaScript来源,但它看起来似乎不是简单的地图。.

我没有得到,用Java会是什么样的Map

我的目标是将此数据发送到我的java方法。

1 个答案:

答案 0 :(得分:1)

完全错误的方法,但是有可能-您可以创建<Object,Object>映射。每个类都是对象的子代, 除了您可能无法用其他方式做到这一点之外,因为在JS中您可以看到混合的数据类型。

当然可以。将布尔值转换为字符串,猜测它还有更好的方法来拥有“原始对象图”。

    Map<Object, Object> test = new HashMap<>();
    test.put("firstString", "first");
    test.put("secondString", "second");
    test.put("thirdBool", true);

    /* print
    Iterator entries = test.entrySet().iterator();
    while (entries.hasNext()) {
        Map.Entry entry = (Map.Entry) entries.next();
        System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
    } 
    */

Reg。提供的代码类似于:

Map<Object, Object> test = new HashMap<>();
test.put("value", "value");
test.put("label", "label");
test.put("disabled", false);

Reg。自定义类,更好的处理方法是创建例如。

class someFooObject{
    private String value;
    private String label;
    private boolean disabled; 

    someFooObject(String value,String label,boolean disabled){
        this.value=value;
        this.label=label;
        this.disabled=disabled;
    }

    public String getValue(){
        return this.value;
    }

    public String getLabel(){
        return this.value;
    }

    public boolean isDisabled(){
        return this.value;
    }
}

然后您可以照常使用它来放置地图

Map<Integer, someFooObject> test = new HashMap<>();
test.put(0,new someFooObject("first","1 label",false));
//Check for params
test.get(0).isEnabled();
test.get(0).getValue();
test.get(0).getLabel();

Java不支持默认值,但是您可以通过以下方式覆盖构造函数:

someFooObject(String value,String label,boolean disabled){
    this.value=value;
    this.label=label;
    this.disabled=disabled;
}

someFooObject(String value,String label){
    this.value=value;
    this.label=label;
    //kind of default value
    this.disabled=true;
}