我有多个实现相同接口的枚举类,比如interface1。
enum classA implements interface1
enum classB implements interface1
enum classC implements interface1.
我想使用泛型编写一个函数,我可以使用varargs格式的泛型传递这些类。我已经编写了一个函数,但它只能在一个课程中使用。
我的实施:
<T extends Enum<T> & interface1> void getLinksUtils(
Map<String, List<Link>> links,
Class<T> configuration) {
............ }
并将其称为:
getLinksUtils(myMap,classA.class);
getLinksUtils(myMap,classB.class);
getLinksUtils(myMap,classC.class);
但是我想创建这个函数,因为我可以以下面的格式传递类:
getLinksUtils(myMap,classA.class,classB.class,classC.class);
有人可以告诉我应该做些什么改变或其他任何有趣的方法。
答案 0 :(得分:1)
如果没有更多的背景我不能自己尝试,但是这样的事情应该在1.5或更晚的时候起作用:
<T extends Enum<T> & interface1> void getLinksUtils(Map<String, List<Link>> links, T ... configurations) {
//add code here
}
getLinksUtils(myMap,classA,classB,classC);
编辑: 这会发出警告,但我确实要削弱你的Enum界限。
import java.util.List;
import java.util.Map;
interface Interface1{
}
enum ClassA implements Interface1{
}
enum ClassB implements Interface1{
}
class Link{
}
public class test {
<T extends Enum<?> & Interface1> void getLinksUtils(Map<String, List<Link>> links, T ... configurations) {
//add code here
}
static void main(String ...args){
ClassA config1 = null;
ClassB config2 = null;
Map<String,List<Link>> links = null;
(new test()).getLinksUtils(links,config1,config2);
}
}