使用泛型在函数中传递多个类

时间:2014-05-26 21:17:30

标签: java generics

我有多个实现相同接口的枚举类,比如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);

有人可以告诉我应该做些什么改变或其他任何有趣的方法。

1 个答案:

答案 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);
     }

}