可比泛型的局部变量
Local variable for comparable generic
我正在尝试对 Comparable 对象的通用列表进行排序。问题是我无法为此类列表定义局部变量,这会导致代码重复。
基本上我需要一个变量来维护带有签名的方法的返回值
<T extends Comparable<T>> List<Item<T>> getItems(int itemType, Class<T> cl)
。
这是代码https://ideone.com/mw3K26。目标是避免第 25、26 行和第 29、30 行的代码重复。
这可能吗?
将关联 itemType -> Class
映射并改用它 if-else。
private static final Map<Integer, Class<? extends Comparable>> types = new HashMap<>();
static {
types.put(1, Long.class);
types.put(2, Date.class);
}
public List<Long> getSortedIds(int itemType) {
Class<? extends Comparable> clz = types.get(itemType);
if (clz != null) {
List<Item> items = (List<Item>)getItems(itemType, clz);
Collections.sort(items);
return items.stream().map(it -> it.id).collect(Collectors.toList());
}
//...
return null;
}
我正在尝试对 Comparable 对象的通用列表进行排序。问题是我无法为此类列表定义局部变量,这会导致代码重复。
基本上我需要一个变量来维护带有签名的方法的返回值
<T extends Comparable<T>> List<Item<T>> getItems(int itemType, Class<T> cl)
。
这是代码https://ideone.com/mw3K26。目标是避免第 25、26 行和第 29、30 行的代码重复。
这可能吗?
将关联 itemType -> Class
映射并改用它 if-else。
private static final Map<Integer, Class<? extends Comparable>> types = new HashMap<>();
static {
types.put(1, Long.class);
types.put(2, Date.class);
}
public List<Long> getSortedIds(int itemType) {
Class<? extends Comparable> clz = types.get(itemType);
if (clz != null) {
List<Item> items = (List<Item>)getItems(itemType, clz);
Collections.sort(items);
return items.stream().map(it -> it.id).collect(Collectors.toList());
}
//...
return null;
}