“ ...的返回类型不是被重写成员的返回类型的子类型”?

时间:2019-02-04 18:56:18

标签: java android kotlin

我正在尝试将函数ActionableNotification.java子类化,其内容类似于:

package com.venmo.notifications.notifications;

import android.content.ContextWrapper;
import com.squareup.picasso.Target;

public abstract class ActionableNotification extends ContextWrapper implements Target {

    @NonNull
    protected abstract String getTrackingNotificationCategory();
    // ...
}

继承类的读法与此类似

class DeclineInsufficientFundsBalanceOnlyCardNotification(context : Context, intent : Intent) : ActionableNotification(context, intent) {

    override fun getTrackingNotificationCategory() = ""
    // ...
 }

但是,当我尝试编译时,出现此错误:

  

/Users/kupeek/dev/venmo-android/p2p-app/src/main/java/com/venmo/notifications/notifications/DeclineInsufficientFundsBalanceOnlyCardNotification.kt:   (21、53):“ getTrackingNotificationCategory”的返回类型不是   重写成员'@NonNull的返回类型的子类型   保护/ 保护和打包 /抽象乐趣   getTrackingNotificationCategory():在中定义的字符串   com.venmo.notifications.notifications.ActionableNotification'

我不理解此错误消息,因为Kotlin继承类的返回类型是字符串,基类也是如此?

2 个答案:

答案 0 :(得分:1)

也许用JetBrains注释@NotNull注释抽象方法会更好。我发现它看起来{{3}}。希望对您有帮助。

答案 1 :(得分:0)

尽管我不太确定为什么这样做,但是当我为覆盖函数指定String类型而不是依靠类型推断时,错误消失了:

override fun getTrackingNotificationCategory(): String = ""