是否可以编写泛型函数来提取对象中的对象,这些对象是通用的?

时间:2013-08-16 17:08:32

标签: java generics

我有一个简单的数据结构

class Triple<S,V,O>{
 private S s;
 private V v;
 private O o;

 ... //constructor

 private Object getParameter(int index){
  switch(index){
  case 0: return s;
  case 1: return v;
  case 2: return o;
 }
}

然后我有一组三元组Set<Triple> tripleSet;

我有一个函数可以在一组三元组的特定索引处创建一组元素。

public Set<Object> extractColumn(Set<Triple> tripleSet, int index){
 Set<Object> columnElements = new HashSet<Object>();
 for(Triple t : tripleSet){
   columnElements.add(t.get(index);
 }
 return columnElements;
}

现在每当我提取一列时,它就是一组对象,当使用返回集合中的对象时,我必须将其强制转换为相应的类型。是否有通用的方法来编码这个数据结构和提取元素的函数?

1 个答案:

答案 0 :(得分:2)

如何参数化每个提取方法?例如:

public <TypeS> Set<TypeS> extractColumnS(Set<? extends Triple<TypeS, ?, ?>> tripleSet) {
  Set<TypeS> columnElements = new HashSet<TypeS>();
  for (Triple<TypeS, ?, ?> t : tripleSet) {
    columnElements.add(t.getS());
  }
  return columnElements;
}

这是对其中一条注释进行跟进,以便为三元组的每个元素创建getter。