Java 如何在我的方法中将MyClass.class作为参数传递?

Java 如何在我的方法中将MyClass.class作为参数传递?,java,class,parameters,Java,Class,Parameters,我正在努力在代码中使用元素作为参数 对于HibernateAPI调用,我需要指定查询结果映射到的类。我不想做很多非常相似的小方法,而是想把它晾干 我这里有一个代码: private void selectAllFrom(MyClass myclass) { CriteriaQuery<MyClass> query = builder.createQuery(Myclass.class); } 相反,我希望将MyClass类作为泛型参数,并使用如下方法: private vo

我正在努力在代码中使用元素作为参数

对于HibernateAPI调用,我需要指定查询结果映射到的类。我不想做很多非常相似的小方法,而是想把它晾干

我这里有一个代码:

private void selectAllFrom(MyClass myclass) {
    CriteriaQuery<MyClass> query = builder.createQuery(Myclass.class);
}
相反,我希望将MyClass类作为泛型参数,并使用如下方法:

private void selectAllFrom(Class<T> any) {
    CriteriaQuery<Class<T>> query = builder.createQuery(Class<T>.class)
}

// usage: 
// selectAllFrom(MyClass.class)

在Java中如何做到这一点?

这应该是可行的。请注意,在引用类型时必须使用T,在引用createQuery和其他方法所需的类值时必须使用any

private <T> void selectAllFrom(Class<T> any) {
    CriteriaQuery<T> query = builder.createQuery(any)
}

这应该行得通。请注意,在引用类型时必须使用T,在引用createQuery和其他方法所需的类值时必须使用any

private <T> void selectAllFrom(Class<T> any) {
    CriteriaQuery<T> query = builder.createQuery(any)
}

我认为用CriteriaQuery替换CriteriaQuery应该做的是trickCriteriaQuery query=builder.createQueryany.class->CriteriaQuery query=builder.createQueryany您对类的工作方式有一个根本性的误解。班上的班级就是班级。我为这个愚蠢的问题感到抱歉。无论如何,谢谢你们的帮助,如果没有你们,我将无法继续我的工作:我认为将CriteriaQuery替换为CriteriaQuery应该完成trickCriteriaQuery query=builder.createQueryany.class->CriteriaQuery=builder.createQueryany您对类的工作方式有一个根本性的误解。班上的班级就是班级。我为这个愚蠢的问题感到抱歉。谢谢你们的帮助,如果没有你们,我将无法继续我的工作:谢谢,但我不能这样使用它:selectAllFromMyClass.classWhy not?请将堆栈跟踪添加到问题中,因为它被IntelliJ标记为红色,为什么它返回T,我不需要返回type@Miger这里没有返回类型。这是一个泛型类型参数。好的,它现在可以工作了。我省略了,因为我第一次认为它是一个返回类型,但后来我看到它仍然是无效的,以前没有看到过,谢谢!谢谢,但我不能这样使用它:selectAllFromMyClass.classWhy not?请将堆栈跟踪添加到问题中,因为它被IntelliJ标记为红色,为什么它返回T,我不需要返回type@Miger这里没有返回类型。这是一个泛型类型参数。好的,它现在可以工作了。我省略了,因为我第一次认为它是一个返回类型,但后来我看到它仍然是无效的,以前没有看到过,谢谢!