77

何も型キャストする必要なく、java.util.List任意の型を返すメソッドを書きたいと思います。

List<User> users = magicalListGetter(User.class);

List<Vehicle> vehicles = magicalListGetter(Vehicle.class);

List<String> strings = magicalListGetter(String.class);

メソッドのシグネチャはどのようになりますか? このようなもの、おそらく(?):

public List<<?> ?> magicalListGetter(Class<?> clazz) {
    List<?> list = doMagicalVooDooHere();

    return list;
}
4

8 に答える 8

27

クラスを渡す必要さえありません:

public <T> List<T> magicalListGetter() {
    return new ArrayList<T>();
}
于 2013-07-25T04:53:09.623 に答える
3

List<Object> objectListキャストしたいものを持ってみましょうList<T>

public <T> List<T> list(Class<T> c, List<Object> objectList){        
    List<T> list = new ArrayList<>();       
    for (Object o : objectList){
        T t = c.cast(o);
        list.add(t);
    }
    return list;
}
于 2016-02-20T08:57:31.103 に答える
3

別のオプションは、次のことです。

public class UserList extends List<User>{

}

public <T> T magicalListGetter(Class<T> clazz) {
    List<?> list = doMagicalVooDooHere();
    return (T)list;
}

List<User> users = magicalListGetter(UserList.class);

`

于 2015-08-05T08:01:47.800 に答える