java - 获取具有类扩展的变量的通用方法

标签 java generics

我尝试构建一个通用方法,但我不知道如何转换它以及在 Java 中是否可能

这是原始方法

public List<PcsTTR> obtainAllPcsTttrRecords() throws Exception {

    try {
        TypedQuery<PcsTTR> pQuery = em.createNamedQuery("PcsTTR.findAll", PcsTTR.class);
        return pQuery.getResultList();
    } catch (Throwable t) {
        throw new Exception("database error ", t);
    }

}

我使用了工厂模式

public <T> List<T> obtainAllRecords(String tableName) throws Exception {

    // if tableName = PcsTTR Im getting PcsTtr object
    myEntity tableObj = myEntityFactory.getTableObj(tableName); 

    String tableObjName = table.getClass().getSimpleName();
    try {
        TypedQuery<T> pQuery = em.createNamedQuery(tableObjName+".findAll", ??????);
        return pQuery.getResultList();

    } catch (Throwable t) {
        throw new Exception("database error " + tableNamee + " !" + t);
    }

}

我不知道该用什么来代替“???”

最佳答案

您可以使用的一件事是 TypeToken这是 Gson 工件的一部分。

            TypedQuery<T> pQuery = em.createNamedQuery(tableObjName+".findAll", new TypeToken<T>() {}.getRawType());

关于java - 获取具有类扩展的变量的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61364386/

相关文章:

Java 嵌套循环检查数组中的元素是否匹配

java - 如何查找数组中重复的元素?

java - 如何在 Eclipse 中获取 Javafx 9?

java - Maven 存储库是否像其他依赖项一样支持 uber jar?

c# - 如何为泛型类编写 C# 扩展方法

java - 在 List(两种变体)、Set(两种变体)、Queue、Deque 中转换 int、long、boolean、String、double

c# - 泛型类型的术语

c# - 当参数值作为接口(interface)传递时,如何解析泛型参数的类类型?

c# - 使用 is 运算符与泛型接口(interface)

java - 安装4j 7.0.6 : Cancel installation from "Replacement script for language code"