如何在Kotlin中使用getDeclaringClass?

问题描述 投票:0回答:1

我有此方法:

    protected <E extends Enum<E>> E getEnum(JSONObject jsonObject, String propertyName, E fallbackEnum)
{
    String fallbackString = GsonXelion.toJson(fallbackEnum);
    String jsonString = getString(jsonObject, propertyName, fallbackString);
    E enumUsingGson = getEnumUsingGson(jsonString, fallbackEnum.getDeclaringClass());
    return enumUsingGson != null ? enumUsingGson : fallbackEnum;
}

我试图将其转换为kotlin并得到了这个:

  protected fun <E : Enum<E>?> getEnum(jsonObject: JSONObject, propertyName: String?, fallbackEnum: E): E {
    val fallbackString = toJson(fallbackEnum)
    val jsonString = getString(jsonObject, propertyName, fallbackString)
    val enumUsingGson: E = getEnumUsingGson(jsonString, fallbackEnum.getDeclaringClass())
    return enumUsingGson ?: fallbackEnum
}

并且getDeclaringClass()在Kotlin中无法识别。我尝试使用fallbackEnum::class.java,但随后出现此错误:

enter image description here

我在做什么错?

android class kotlin enums gson
1个回答
0
投票

您尝试像这样调用它:getEnumUsingJson(String, Class<E>)。但是,在Java代码中,您可以使用getEnumUsingJson(String, Class<declaring class of E>来调用它。因此,它不兼容,是另一个类,并且编译失败,因为扣除的类型与任何可能的签名都不兼容。

© www.soinside.com 2019 - 2024. All rights reserved.