0

有这个功能

Transformers.aliasToBean(RoomInfoDTO.class);

现在我将在我的通用方法中使用上述函数。如何将其传递给class方法并使用它?

我尝试了以下但它不起作用

passThis(PurchaseHistoryDTO.class);
....

function passThis(Class<?> passedClass){

Transformers.aliasToBean(passedClass.getClass());

}

不知何故,该函数将类作为class java.lang.Class.

4

3 回答 3

5

直接传递参数而不调用getClass它。passedClass是一个 Class 对象,所以调用getClass它显然会返回java.lang.Class. 做就是了:

function passThis(Class<?> passedClass){

     Transformers.aliasToBean(passedClass); //just pass the class, not the class's class

} 

另外,我假设“功能”是速记/伪代码;这不会在java中编译。用返回类型替换它,可能是void.

于 2013-10-18T04:14:11.807 回答
2

您正在通过课程,因此您可以直接对其进行操作。

void passThis(Class<?> passedClass) {

  Transformers.aliasToBean(passedClass);

}

你也不用functionJava说。你可能会想到 JavaScript。

另一方面,在示例中使用泛型类基本上没有意义。简单地通过(Class passedClass)也可以。

所以问题是你为什么走泛型路线。可能是你想要更像这样的东西:

<T> T passThis(Class<T> passedClass){

        return Transformers.aliasToBean(passedClass);

}

仅取决于您要完成的工作。

于 2013-10-18T04:16:15.873 回答
2

因为你已经传入了类PurchaseHistoryDTO.class对象

Class<?> passedClass argument, 

只需在方法中传递“ passedClass ” ,例如:

Transformers.aliasToBean(passedClass);

它应该工作。

于 2013-10-18T04:16:34.287 回答