Google Guava r08 및 JDK 1.6.0_23을 사용하고 있습니다.Google Guava : ImmutableSortedMap.naturalOrder를 사용하는 방법?
작성자를 사용하여 ImmutableSortedMap
을 만들고 싶습니다. 예를 들어,지도를 구축하는 것을 사용 후
ImmutableSortedMap.Builder<Integer, String> b1 =
new ImmutableSortedMap.Builder<Integer, String>(Ordering.natural());
과 : 나는이 같은 빌더를 만들 수 있습니다 알고 내가 클래스 ImmutableSortedMap
자연과 함께 Builder
를 반환하는 방법 naturalOrder()
을 가지고 것으로 나타났습니다
ImmutableSortedMap<Integer, String> map =
b1.put(1, "one").put(2, "two").put(3, "three").build();
주문. 그러나이 메서드를 호출하려고하면 이상한 오류가 발생합니다. 예를 들어,이 이상한 준다 "예상"오류 :
// Does not compile
ImmutableSortedMap.Builder<Integer, String> b2 =
ImmutableSortedMap<Integer, String>.naturalOrder();
naturalOrder()
메소드를 호출 할 수있는 올바른 구문은 무엇입니까?
메소드의 API 문서에는 일부 컴파일러 버그가 설명되어 있습니다. 이 방법이 작동하지 않는 것과 관련이 있습니까?
편집
MForster의 대답은 좋다. 제네릭을 떠날 때, 나는 "한 번에"그것을 할 수 없습니다
// Doesn't work, can't infer the types properly
ImmutableSortedMap<Integer, String> map =
ImmutableSortedMap.naturalOrder().put(1, "one").put(2, "two").put(3, "three").build();
이가하는 일 :
ImmutableSortedMap<Integer, String> map =
ImmutableSortedMap.<Integer, String>naturalOrder().put(1, "one").put(2, "two").put(3, "three").build();
예, 당신이해야합니까 (일반 매개 변수가되지 전에, 점 뒤에 있습니다) 'ImmutableSortedMap. naturalOrder()'를 넣는다. Java는'naturalOrder()'호출의 타입 인자를 추론 할 수 없습니다. 반환되는'Builder '는 아무 것도 할당되지 않기 때문입니다. –
ColinD