Java에서 확인되지 않은 호출 경고를 수정하는 방법은 무엇입니까?
내가 작성한 코드는 다음과 같습니다.
Set keys = map.keySet();
SortedSet s = new TreeSet(keys);
내가받는 경고는 다음과 같습니다.
warning: [unchecked] unchecked call to TreeSet(java.util.Collection<? extends E>) as a
member of the raw type java.util.TreeSet
컴파일러 경고를 어떻게 제거합니까?
이상적으로는 제네릭을 완전히 사용하십시오. 유형이 무엇인지 보여주지 map
않았지만 이상적으로는 다음과 같이 작성할 수 있어야합니다.
Set<String> keys = map.keySet();
SortedSet<String> s = new TreeSet<String>(keys);
즉, 경우에있을 것입니다 map
유사한 것이었다 Map<String, Integer>
.
경우 map
자체가 원시 유형, 그것은 더 어렵다 - 다시, 최고의 수정 원시 유형 치우는, 당신의 코드베이스를 통해 제네릭을 추가하기 시작하는 것입니다. 물론지도가 타사 코드에서 반환되는 경우 항상 가능한 것은 아닙니다. 이 경우 원시 유형에서 제네릭 유형으로 변환 할 때 한 줄에 경고를 표시 Collections.checkedCollection
하지 않아야 할 수 있습니다. 그 후에는 제네릭 유형을 "올바르게"사용할 수 있어야합니다. 예를 들면 :
@SuppressWarnings("unchecked") // Just for this one statement
Collection<String> keys = Collections.checkedCollection(map.keySet(),
String.class);
// Now this statement is fully generic with no warnings
SortedSet<String> s = new TreeSet<String>(keys);
이 문제에 관한 한 매개 변수화 된 키 유형을 사용해야합니다.
Set<TypeOfKeyObject> keys = map.keySet();
SortedSet<TypeOfKeyObject> s = new TreeSet<TypeOfKeyObject>(keys);
TypeOfKeyObject
개체에서 키의 개체 유형은 어디에 있습니까 map
?
(이미 올바르게 제안 된대로) 경고를 강제로 억제 할 수 있지만 권장하지 않습니다.
모호하게 들릴 위험이 있으므로 제네릭을 연구하는 것이 좋습니다. 좋은 시작점은 다음과 같습니다. http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
참조 URL : https://stackoverflow.com/questions/5295635/how-to-fix-unchecked-call-warning-in-java
'programing' 카테고리의 다른 글
Ruby-on-Rails : 다중 has_many : through 가능? (0) | 2021.01.14 |
---|---|
"활성화 / 비활성화"라는 단어는 무엇입니까? (0) | 2021.01.14 |
belongs_to 다형성과 함께 accepts_nested_attributes_for (0) | 2021.01.14 |
Ruby on Rails 생성 뷰 (0) | 2021.01.14 |
git status 출력을 위해 호출기를 어떻게 켤 수 있습니까? (0) | 2021.01.14 |