我正在尝试创建一个子句生成器,它将帮助我在给定对象列表的情况下生成where子句的部分部分
我有以下方法,在appendToClause方法中我想识别参数化类型T,并使用反射来获取声明的字段及其值。
我是否需要传递对象的类类型,是否会更容易,还是可以使用反射来识别T的类类型?如何找到T的班级类型
如何使用反射从类型为T的参数化对象中获取声明的字段及其值?
public void generateClause(List<T> objects) {
int id = 0;
StringBuilder clause = new StringBuilder();
Map<String, Object> params = new LinkedHashMap<>();
for (T key : objects) {
if (clause.length() > 0) {
clause.append(" or ");
}
appendToClause(key, clause, params, id);
id++;
}
}
private void appendToClause(T key, StringBuilder clause, Map<String, Object> params, int Id) {
}
答案 0 :(得分:0)
你的函数会产生这样的错误,因为T不存在,你需要的是:
public <T> void generateClause(List<T> objects) {}
关于您的问题,您正在寻找type inference。