2017-09-26 12 views
4

스크립트 엔진에 전달한 Java HashMap이 있습니다. 나중에 잘못된 키를보고하기 때문에 처리되는 항목을 삭제하고 싶습니다. 항목을 제거하는 명백한 일반적인 방법 (delete testMap['key'];)은 아무 효과가 없습니다.Nashorn 내에서 Java Map에서 요소를 제거하는 방법 JavaScript

이 테스트를 통과하려면 어떻게해야합니까?

@Test 
public void mapDelete() throws ScriptException{ 
    Map<String,String> map = new HashMap<>(1); 
    map.put("key","value"); 

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); 
    engine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE).put ("testMap", map); 
    engine.eval("delete testMap['key'];"); 
    Assert.assertEquals (0, map.size()); 
} 

답변

3

당신은 당신이 HashMap을 알고 있다면, 당신은 : 즉, 그 Map APINashorn

@Test 
public void mapDelete() throws ScriptException { 
    Map<String,String> map = new HashMap<>(1); 
    map.put("key","value"); 

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); 
    engine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE).put ("testMap", map); 
    engine.eval("testMap.remove('key');"); 
    Assert.assertEquals (0, map.size()); 
} 
+0

완벽하게 사용할 수 있습니다! 고맙습니다. –