将一般的变量数据类型添加到集合Java中

时间:2017-11-08 14:44:18

标签: java generics wildcard insertion

这是我想要做的一个例子:

Class Example {
    private Set<A> setA = new HashSet<A>();
    private Set<B> setB = new HashSet<B>();


    //setters/getters

    . . .


    // this method is where I don't know what to put
    public boolean addToList(Set<?> set, <?> generic){
          set.add(generic)
    }

    public static void main(String[] args){
         Example ex = new Example();
         ex.addToList(ex.getSetA(), new A());
         ex.addToList(ex.getSetB() new B());
    }
}

我想编写一个方法来执行不同数据类型的集合。我发现这比为十几组中的每一组编写add / get / remove方法更实用。

有没有办法在Java中执行此操作?

2 个答案:

答案 0 :(得分:3)

我认为你需要参数化方法

public <T> boolean addToList(Set<T> set, T generic){
      set.add(generic)
}

答案 1 :(得分:1)

(除非你想在add方法成功/失败时做出某些事情,否则你应该使用void而不是通用类型。)

这是一个应该有效的例子:

public void addToAList(Set<A> set, A generic){
      set.add(generic);
}

但是,如果要创建通用addToList函数,则需要进一步推进,因为您需要比较您在方法中输入的Set和Object之间的类。考虑到您无法在对象上调用getClass().class,我认为您最简单的方法(但不是最好的)方法是将其缩减为两个方法