相关疑难解决方法(0)

Kotlin中有构造函数引用吗?

在Java中,我们有Class::new构造函数引用的语法.我知道,方法有可调用的引用,但构造函数如何?我的一个典型用例是工厂.

kotlin constructor-reference

82
推荐指数
1
解决办法
7611
查看次数

Kotlin泛型Array <T>导致"不能使用T作为一个改进的类型参数.请改用类"但List <T>不会

我有一个包含T和一些元数据的数组(或列表)的接口.

interface DataWithMetadata<T> {
    val someMetadata: Int
    fun getData(): Array<T>
}
Run Code Online (Sandbox Code Playgroud)

如果我编写最简单的接口实现,我会得到一个编译错误emptyArray():"不能使用T作为一个改进的类型参数.请改用类."

class ArrayWithMetadata<T>(override val someMetadata: Int): DataWithMetadata<T> {
    private var myData: Array<T> = emptyArray()

    override fun getData(): Array<T> {
        return myData
    }

    fun addData(moreData: Array<T>) {
        this.myData += moreData
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将接口和实现都更改为列表,我没有编译时问题:

interface DataWithMetadata<T> {
    val someMetadata: Int
    fun getData(): List<T>
}

class ListWithMetadata<T>(override val someMetadata: Int): DataWithMetadata<T> {
    private var myData: List<T> = emptyList()

    override fun getData(): List<T> {
        return myData
    }

    fun addData(moreData: Array<T>) { …
Run Code Online (Sandbox Code Playgroud)

java arrays generics reification kotlin

34
推荐指数
2
解决办法
1万
查看次数

在Kotlin中实例化泛型类型

在Kotlin中获取泛型类型实例的最佳方法是什么?我希望找到以下C#代码的最佳(如果不是100%完美)近似值:

public T GetValue<T>() where T : new() {
    return new T();
}
Run Code Online (Sandbox Code Playgroud)

kotlin

14
推荐指数
1
解决办法
4574
查看次数