2010-01-27 2 views
0

Set 매개 변수가 필요한 메서드가 있습니다. 빈 세트를 전달하고 싶습니다. 세트에 부작용을 원하지 않습니다.은 Set 대신 ImmutableSet을 전달합니까?

내가 전달하여 컬렉션을 사용하여이 작업을 수행 할 수

Collections.unmodifiableSet(Sets.newHashSet()) 

하지만 전달하려는 :

ImmutableSet.of() 

나는 포머 Set<Object>이 만들어 내가 얻을 수있다 할 경우 "방법이 아니다 args에 적용 할 수 있습니다. 오류가 있습니다. 후자를 수행하면 ImmutableSet<Object>이 생성되고 비슷한 오류가 발생합니다.

작동 방식 :

Collections.unmodifiableSet(new HashSet<String>()) 

...하지만 추한 것처럼 보이고 Google Collections 방식을 찾고 싶습니다.

답변

9

이 시도 :

ImmutableSet.<String>of() 

이 너무 작동합니다

Collections.<String>emptySet() 

이 구문은 수동 형태 인수 유형의 추론이 실패 어떤 시간을 지정하는 데 유용합니다. :-)

0

이 또한 작동합니다

public static void main(String[] args) { 
    Set<String> emptySet = ImmutableSet.of(); 
    doStuffWith(emptySet); 
} 

static void doStuffWith(Set<String> strings) { 
    // ... 
} 

당신이 Set<String> 변수에 할당하고 알고있는 타입 추론 고지 유형 매개 변수가 String이어야하기 때문이다.

관련 문제