【发布时间】:2020-02-17 08:23:12
【问题描述】:
我想发送一个类名作为方法的参数。我想这样使用(执行)它。
orderDao.getTheMostFrequentType(EmployeeOrder.class);
我有这个代码
@Override
public String getTheMostFrequentType(Class<T> orderClass){
String tableName = orderClass.getAnnotation(Table.class).name();
String sqlQuery = "SELECT STATS_MODE(signed_by_id) FROM " + tableName;
String result = (String)getSessionFactory().getCurrentSession().createSQLQuery(sqlQuery).uniqueResult();
return result;
}
但它执行尝试给了我:
getTheMostFrequentType("org.apache.poi.ss.formula.functions.T") method cannot be applied in "java.lang.entities.EmployeeOrder"
我应该导入其他类而不是 apache.poi。但是哪一个?我做错了什么?
【问题讨论】:
-
这是什么
T?为什么它来自apache.poi? -
什么是
orderClass -
表示泛型。 -
检查您的导入语句。
-
您的
Class<T>在这里并不意味着通用,因为您似乎已经从 Apache 库中导入了一个名为T的类 -->org.apache.poi.ss.formula.functions.T。我认为它的发生是因为你的类没有定义T(我们可以看到你的方法也没有)。为了解决这个问题,您按照 IDE 的建议执行了操作,导入了一个已知的T类。
标签: java class generics reflection annotations