다음 코드는 컴파일되지만 주석 처리 된 행의 주석 처리를 제거하면 그 이유가 혼동 스럽습니다. HashMap은 AbstractMap을 확장하고 map이 선언 된 첫 번째 라인은 잘 컴파일됩니다.Java 일반 질문
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String args[]) {
Map<String, ? extends AbstractMap<String, String>> map = new HashMap<String, HashMap<String, String>>();
//map.put("one", new HashMap<String, String>());
}
}
는, 나는 "올바른 방법"이 알고 :
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String args[]) {
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
map.put("one", new HashMap<String, String>());
}
}
안녕하세요. 설명 할 수 있니? 왜 안전하지 않니? 주황색 예제가 효과가있는 것처럼 보였습니다. 과일 목록에 오렌지를 추가해야합니다. – Jeb
가장 중요한 과일 목록을 갖고 싶다면 해결책은 무엇입니까? – Jeb
@ user450602 :하지만 실제로는 과일 목록이 아닙니다. 목록은입니다. 자바는 타입 소거 때문에 말할 수 없다. 예제가 작동하지 않아야하는 이유를 더 자세히 보여주기 위해이 예제를 편집 해 보겠습니다. –