泛型作为方法返回类型

时间:2014-07-12 06:32:17

标签: java generics

我正在尝试执行以下操作:

    Class MyClass{
      Public ArrayList Query(String queryName ) {
          ArrayList items = new ArrayList();
         if (queryName =="query1") { 
           ClassA objA1 = new ClassA();
           ClassA objA2 = new ClassA();
           ....//logic to populate the object
           items.add( objA1 ); 
           items.add( objA2 ); 
          }
         elseif (queryName =="query1") {  
           ClassB objB1 = new ClassB();
           ClassB objB2 = new ClassB();
           ....//logic to populate the object
           items.add( objB1 ); 
           items.add( objB2 ); 

          }
         return items.
     }
    }

现在,使用Generic作为ArrayList,例如。          ArrayList items = new ArrayList();
但我不能这样做,因为return参数可以是任何一种类型。在这种情况下,如何将泛型用于方法返回类型? MyClass有方法'Query',ClassA和ClassB是MyClass的内部类。我们的想法是在根级别类中编写一个查询实现,它将接受queryName,触发查询并返回与查询相关的内部类对象的实例(List / Table)。 以上代码仅代表逻辑表示。

1 个答案:

答案 0 :(得分:1)

作为一般答案,由于你的问题有点不清楚你想要做什么,我将解释标题的问题。如果您想将泛型作为返回类型,则必须以这种方式定义:

public static <T> ArrayList<T> query(final T object) {
  final ArrayList<T> ts = new ArrayList<>();
  ts.add(object);
  return ts;
}

现在您可以使用

调用此方法
final ArrayList<ClassA> query = query(new ClassA());

final ArrayList<ClassB> query = query(new CLassB());