我正在尝试执行以下操作:
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)。
以上代码仅代表逻辑表示。
答案 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());