如何使 Kotlin 泛型方法静态化?

Haw*_*ike 1 generics static kotlin

我知道可以用 Java 编写静态泛型方法。

我试图在 Kotlin 中实现我自己的解决方案,但我失败了。

class Wrapper<T>
{
    companion object <T> // error: Type parameters are not allowed for objects.
    {
        private var value: T? = null

        // implement some methods
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在 Kotlin 中实现静态泛型方法吗?

Sta*_*ski 7

companion object不是方法。事实上,object它是Wrapper类的伴生对象,因此它无法知道父类的泛型类型。同样的事情适用于 Java:

public class Wrapper<T> {
    public static T value; //ERROR
}
Run Code Online (Sandbox Code Playgroud)

在此companion object您可以声明将static在 Java 世界中的方法和字段。

class Wrapper<T>
{
    companion object
    {
        fun <T> genericMethod(){

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但请记住, type ofWrapper<T>与 type Tin无关fun <T> genericMethod()