2017-11-04 12 views
2

私は法N回を呼び出しています:セット<Class<?>>をリストに変換するには?

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

それはSet<Class<?>>を返します。

私はどのように私は私のSet<Class<?>>を変換することができセッターにexposeIdsFor(Class<?>... domainTypes)

を持っているので、機能exposeIdsForは、コンパイルエラーをスローしませんか?

+0

ここでは、クラスのリストを作成しています。 –

+0

私は混乱しています。あなたの 'Set'はどこですか? –

答えて

1

Classオブジェクトの配列を期待exposeIdsFor(Class<?>... domainTypes)方法:この場合、次のように、セットからアイテムを選択するヘルパーメソッドを追加します。配列Set<Class<?>>toArrayメソッドで変換することができます。

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

あなたはそこにあるクラスのリストを作成しています。

ArrayListをArrayListにコピーする必要はありません。リストをコピーするだけです。言い換えれば、それはarrayでなければならない。

ちょうどArrayListに物を入れてaddAllとします。

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

あなたは、各Set<Class<?>>は正確に一つのオブジェクトが含まれていることを期待するように見えます。

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(); 
} 
関連する問題