标识参数化类型并从特定对象获取字段值

时间:2017-10-20 14:53:23

标签: generics java-8

我正在尝试创建一个子句生成器,它将帮助我在给定对象列表的情况下生成where子句的部分部分

我有以下方法,在appendToClause方法中我想识别参数化类型T,并使用反射来获取声明的字段及其值。

  1. 我是否需要传递对象的类类型,是否会更容易,还是可以使用反射来识别T的类类型?如何找到T的班级类型

  2. 如何使用反射从类型为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) {
    

    }

1 个答案:

答案 0 :(得分:0)

你的函数会产生这样的错误,因为T不存在,你需要的是:

public <T> void generateClause(List<T> objects) {}

关于您的问题,您正在寻找type inference