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

Ela*_*nda 2 java generics class

IosPartner extends Partner

AndroidPartner extends Partner
Run Code Online (Sandbox Code Playgroud)

我有这个代码:

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

    Partner partnerToAdd = jsonUtility.toObject(partnerStr, clazz);
Run Code Online (Sandbox Code Playgroud)

public <T> T toObject(String json, Class<T> clazz) {
        if (json == null)
            return null;
...
Run Code Online (Sandbox Code Playgroud)

我收到编译错误:

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

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

Joh*_*ger 6

您需要告诉编译器Class您传递给的对象toObject()不仅仅是任何对象Class,而是一个表示扩展的类的对象Partner.为此,请声明其类型如下:

Class<? extends Partner> clazz = partnerStr.contains("itunes")
        ? IosPartner.class : AndroidPartner.class;
Run Code Online (Sandbox Code Playgroud)