Java 是否可以编写泛型函数来提取泛型对象中的对象?

Java 是否可以编写泛型函数来提取泛型对象中的对象?,java,generics,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; } } 三级{ 私家侦探; 私人V V; 私人办公室;

我有一个简单的数据结构

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;
 }
}
三级{
私家侦探;
私人V V;
私人办公室;
…//构造函数
私有对象getParameter(int索引){
开关(索引){
案例0:返回s;
案例1:返回v;
案例2:返回o;
}
}
然后我有一组三元组
set-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;
}
publicsetractColumn(Set-tripleSet,int-index){
Set columnElements=new HashSet();
用于(三重t:三重集){
columnElements.add(t.get(index));
}
返回元素;
}

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

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

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;
}
公共集合提取列(集合>三重集合){
Set columnElements=new HashSet();
用于(三重t:三重集){
columnElements.add(t.getS());
}
返回元素;
}

这是对其中一条注释的后续操作,用于为三元组的每个元素创建getter。

不要使用单个getter。每个字段使用一个getter。如果要返回不同的类型,唯一可以接受的类型是
Object
@SotiriosDelimanolis,这是否意味着我还需要在中使用不同的函数不是一个单独的
extractColumn
?是的,我觉得你想做一些可以通过反射更好地实现的事情。你可以让所有3个对象都扩展同一个类或接口,但这是否有用还值得怀疑。我同意这里的@SotiriosDelimanolis。也许如果你为这
三重数据添加一些代码
保持和如何使用它们,然后可能会出现一个更好的想法。getter的正常模型是每个字段有一个:例如,
getLength();getWidth();
,等等。为什么不
getS();getV();getO()呢
,正如@SotiriosDelimanolis所建议的那样?您会希望它接受
设置>
-嵌套的通配符不会捕获。@PaulBellora感谢您捕捉到这一点。