2017-11-04 4 views
2

나는 방법 N 시간을 호출 오전 :집합을 <Class<?>> 목록으로 변환하는 방법?

Set<Class<?>> userManagementEntities = new Reflections("com.domain.api.userManagement.domain").getTypesAnnotatedWith(Entity.class); 

그것은 Set<Class<?>>을 반환합니다.

나는 exposeIdsFor(Class<?>... domainTypes)

가 어떻게 내 Set<Class<?>> 그래서 기능 exposeIdsFor 컴파일 오류가 발생하지 않는 변환 할 수있는 세터가?

+0

클래스 목록을 작성 중입니다. –

+0

나는 혼란 스럽다. 당신의'세트'는 어디에 있습니까? –

답변

1

Class 객체의 배열을 기대 exposeIdsFor(Class<?>... domainTypes) 방법을. toArray 메소드를 사용하여 Set<Class<?>>을 배열로 변환 할 수 있습니다.

exposeIdsFor(userManagementEntities.toArray(new Class[userManagementEntities.size()])); 
3

거기서 수업 목록의 목록을 만들고 있습니다.

그리고 ArrayList를 ArrayList에 복사 할 필요가 없습니다. 단순히 목록 만 복사하면됩니다. 말할 것도없이 array이어야합니다.

addAll으로 ArrayList에 넣으십시오. 각 Set<Class<?>> 정확히 하나의 객체를 포함 할 것으로 예상처럼

List<Class<?>> list = new ArrayList<>(); 
list.addAll(new Reflections("com.domain.api.userManagement.domain").getTypesAnnotatedWith(Entity.class)); 
// ... 

Class<?>[] array = list.toArray(new Class<?>[0]); 
config.exposeIdsFor(array); 
+0

@ BigDong 이전에이 문제가 있었습니까? 업데이트 됨. –

1

는 것 같습니다. 이 경우, 다음과 같이 집합에서 항목을 선택하는 도우미 메서드를 추가

static Class<?> getAnnotatedClass(String name, Class<?> annotated) { 
    Set<Class<?>> res = new Reflections(name).getTypesAnnotatedWith(annotated); 
    if (res.size() != 1) { 
     throw new IllegalStateException("Missing "+name); 
    } 
    return res.iterator().next(); 
} 
관련 문제