如何将Class <t>发送到泛型方法

时间:2017-06-14 14:51:50

标签: java class generics

IosPartner extends Partner

AndroidPartner extends Partner

我有这段代码:

    Class<T> clazz = partnerStr.contains("itunes")? IosPartner.class : AndroidPartner.class;

    Partner partnerToAdd = jsonUtility.toObject(partnerStr, clazz);

public <T> T toObject(String json, Class<T> clazz) {
        if (json == null)
            return null;
...

我收到编译错误:

Error:(64, 52) java: incompatible types: java.lang.Object cannot be converted to com.waze.sdkService.operations.uiDto.Partner

我应该如何修改我的代码以进行推广?

2 个答案:

答案 0 :(得分:6)

您需要告诉编译器您传递给Class的{​​{1}}对象不仅仅是toObject(),而是一个代表扩展Class的类的对象。为此,请声明其类型:

Partner

答案 1 :(得分:0)

这只是在您不必使用T时的问题。由于这两个类都扩展了Partner,因此只需使用Class<? extends Partner而不是Class<T>

编辑:@John Bollinger打败了我。