【问题标题】:"projections are not allowed for immediate arguments of a supertype" Kotlin Android Studio“超类型的直接参数不允许投影” Kotlin Android Studio
【发布时间】:2017-10-18 22:19:25
【问题描述】:

当我将 Java 转换为 Kotlin 时出现此错误:

Java

public class HeaderTab extends ExpandableGroup {
    private String header;

    public HeaderTab(String title, List items) {
        super(title, items);
    }
}

科特林

class HeaderTab(title: String, items: List<*>) : ExpandableGroup<*>(title, items) {
    private val header: String? = null
}

Android Studio 是这样说的:

超类型的直接参数不允许投影

这里需要修改什么?

【问题讨论】:

    标签: java android android-studio kotlin kotlin-android-extensions


    【解决方案1】:

    使用Any 进行快速修复,或引入类型参数以确保不会破坏库的类型安全性。

    class HeaderTab(title: String, items: List&lt;*&gt;) : ExpandableGroup&lt;Any&gt;(title, items) {

    class HeaderTab&lt;E&gt;(title: String, items: List&lt;E&gt;) : ExpandableGroup&lt;E&gt;(title, items) {

    问题在于 kotlin 要求类类型必须完全指定,因此您可以指定特定类型作为类型参数,也可以通过新的类型参数传递。

    【讨论】:

    • 现在想知道 Kotlin 团队试图做什么以及他们是否实现了他们想要的?!可能不是。他们认为 Java 核心团队未能(并且失败)解决的“严格”规则总是有一个快速解决方案。几乎相同的废话具有不同的语法和名称
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    相关资源
    最近更新 更多