泛型作为方法返回类型

达曼迪普·塔库尔(Damandeep Thakur)

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

    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,触发查询并返回与查询相关的内部类对象的实例(列表/表)。上面的代码仅表示逻辑表示。

马丁·塞勒(Martin Seeler)

作为一般性回答,由于您的问题尚不清楚您要做什么,因此我将解释标题的问题。如果要将泛型作为返回类型,则必须以这种方式进行定义:

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());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章