我无法解决以下问题:
问题陈述:有一个类(GenericObject),它是一个泛型类,应该能够接受任何类型的对象。
现在,我想通过工厂类创建此类的对象。这个工厂类应该给我一个对象或一个对象列表。
现在,我可以为自己选择的对象获得单个通用对象,但是对于通用对象列表,我无法弄清楚。
下面是示例代码:
package com.ge.hc.lcs.axis.components.factory;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String args[])
{
GenericObject<Integer> genericObject=Factory.getSingleInstance();
//below line does not compile
List<GenericObject<Integer>> genericObjectList=Factory.getListOfInstance();
}
}
class Factory{
public static GenericObject getSingleInstance()
{
return new GenericObject<>();
}
public static List<GenericObject> getListOfInstance()
{
List<GenericObject> genericObjectList=new ArrayList<>();
genericObjectList.add(new GenericObject<>());
genericObjectList.add(new GenericObject<>());
return genericObjectList;
}
}
class GenericObject<T>{
void add(T object)
{
System.out.println(object.getClass());
}
}
现在,在下面的行中可以正常使用:
GenericObject<Integer> genericObject=Factory.getSingleInstance();
但这不是:
//below line does not compile
List<GenericObject<Integer>> genericObjectList=Factory.getListOfInstance();
如何实现这一目标。任何想法或建议都值得赞赏。
答案 0 :(得分:1)
由于您的#include <stdio.h>
void say_hello(void) {
printf("Hello world\n");
}
void (*p)(void) = say_hello;
int main(void) {
(*p)();
return 0;
}
类使用泛型,因此您也必须在方法签名中定义这些泛型:
GenericObject
答案 1 :(得分:0)
首先:不要使用原始类型。 What is a raw type and why shouldn't we use it?
一种修复代码的方法是将类型参数引入工厂方法中。
class Factory{
public static <T> GenericObject<T> getSingleInstance()
{
return new GenericObject<T>();
}
public static <T> List<GenericObject<T>> getListOfInstance()
{
List<GenericObject<T> genericObjectList=new ArrayList<>();
genericObjectList.add(new GenericObject<T>());
genericObjectList.add(new GenericObject<T>());
return genericObjectList;
}
}
答案 2 :(得分:0)
使用通用类型
public static <T> List<GenericObject<T>> getListOfInstance()
{
List<GenericObject<T>> genericObjectList=new ArrayList<>();
genericObjectList.add(new GenericObject<T>());
genericObjectList.add(new GenericObject<T>());
return genericObjectList;
}