2010-03-10 3 views
5

나는 다음과 같은 코드가 있습니다여기에 검사되지 않고 안전하지 않은 작업은 무엇입니까?

private static final Set<String> allowedParameters; 
static { 
    Set<String> tmpSet = new HashSet(); 
    tmpSet.add("aaa"); 
    allowedParameters = Collections.unmodifiableSet(tmpSet); 
} 

을 그리고 원인 : HashSet(); 앞에 "새로운"을 가리키는

Note: mygame/Game.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 

을 내가 제안 된 옵션을 사용하여 컴파일 때 포인터 (^)를 참조하십시오 .

여기에서 무슨 일이 벌어지고 있는지 아는 사람이 있습니까?

답변

9

예, 포함 할 클래스를 명시하고 문자열이 포함되어 있다고 주장하지 않고 새 HashSet을 만듭니다.

Set<String> tmpSet = new HashSet<String>(); 
2

이 메시지는 새로운 J2SE 1.5 기능 (generics)을 지원하는 클래스를 사용할 때 발생합니다. 콜렉션의 컨텐츠 유형을 명시 적으로 지정하지 않을 경우이를 가져옵니다. 여러 데이터 유형을 넣어해야하는 경우

List<String> l = new ArrayList<String>(); 
list.add("String"); 

:

List l = new ArrayList(); 
list.add("String"); 
list.add(55); 

단일 데이터의 컬렉션을 가지고 싶다면

당신이하여 메시지를 제거 할 수 입력 : 예를 들어

한 번 모음으로, 당신이 할 : 컴파일러에 체크되지 않은 매개 변수, 요 :

List<Object> l = new ArrayList<Object>(); 
list.add("String"); 
list.add(55); 

당신은 -Xlint를 추가하는 경우 문제에 대한 구체적인 내용을 알 수 있습니다.

자세한 내용은 여기를 참조하십시오. http://forums.sun.com/thread.jspa?threadID=584311

관련 문제