泛型:从静态方法获取参数化类型名称?

时间:2011-05-16 09:27:16

标签: java

我有一个简单的静态方法:

public static <U> U findStuff(String id) {
    // how can i get the class of type U here ?
    Class classObject = ....;

    return classObject.newInstance();
}

public static void main(String[] args) {
    MyEntity entity = MyClass.<MyEntity>findStuff("abc");
}

我想知道如何从U?

获取类对象

目前我必须通过课程,因为我还不知道方式..所以,现在我使用这样的东西:

public static <U> U findStuff(Class<U> classObject, String id) {
    return classObject.newInstance();
}

public static void main(String[] args) {
    MyEntity entity = MyClass.findStuff(MyEntity.class, "abc");
}

3 个答案:

答案 0 :(得分:4)

要获取对象的类,请使用object.getClass();

顺便说一句,这是与泛型

无关的常用方法

答案 1 :(得分:2)

确实

Class<?> classObject = object.getClass();

为你做足够的事吗?目前尚不清楚您需要em.find做什么。

编辑:好的,通过编辑,您遇到了类型擦除的问题。基本上,你需要传入你感兴趣的课程,就像你已经在做的那样。有关详细信息,请参阅Java generics FAQ。这是Java泛型实现方式的一个不幸的必然结果:(

答案 2 :(得分:1)

// because object extends java.lang.Object
Class<?> classObject = object.getClass();