首页 > 解决方案 > 试图将一个小的 javascript 代码转换为 java

问题描述

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

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

我正在研究 w3schools 和其他 javascript 资源,但它看起来不是一个简单的地图..

我没有得到,这在 java 中会是什么样的地图

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

标签: javascriptjava

解决方案


完全错误的方法,但有可能——您可以创建<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());
    } 
    */

注册。提供的代码类似于:

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

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

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;
}

推荐阅读