我有一个名为“toto”的类,我发送给执行以下操作的函数:
getData(toto);
public String getData(Class myClass) {
javax.jdo.Query query = p.newQuery(myClass);
List<myClass> list = (List<myClass>) pm.newQuery(query).execute();
for (myClass element : list) {
Do something here
}
}
问题是我得到了类型编译错误。 我做错了什么?
乔尔
答案 0 :(得分:2)
您不能将运行时变量用作泛型构造的“参数”(如List<X>
)。如果您对所传授的课程有所了解,那么您可以限制:
public String getData(Class<? extends Something> myClass) {
// ...
List<Something> list = (List<Something>) // ...
答案 1 :(得分:1)
您可以通过以下方式实现:
public <T> String getData(Class<T> myClass) {
javax.jdo.Query query = p.newQuery(myClass);
List<T> list = (List<T>) pm.newQuery(query).execute();
for (T element : list) {
Do something here
}
}
其中,如果您要在toString()
上调用element
以外的任何方法,则需要接口/基类型并将定义更改为<T extends YourInterface>