相关疑难解决方法(0)

Kotlin,关于Number的通用操作

我有以下内容

abstract interface Vec2t<T : Number> {    
    var x: T
    var y: T
}
Run Code Online (Sandbox Code Playgroud)

data class Vec2(override var x: Float, override var y: Float) : Vec2t<Float>

我有一个界面,我定义了几个操作,例如:

interface fun_vector2_common {

    fun abs(res: Vec2, a: Vec2): Vec2 {
        res.x = glm.abs(a.x)
        res.y = glm.abs(a.y)
        return res
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以abs通过使用泛型来实现?

interface fun_vector2_common<T : Number> {

    fun abs(res: Vec2t<T>, a: Vec2t<T>): Vec2t<T> {
        res.x = glm.abs(a.x)  // error
        res.y = glm.abs(a.y)  // error
        return res
    }
}
Run Code Online (Sandbox Code Playgroud)

然后glm.abs()会根据类型调用相应的?

上面的代码失败了,因为它显然期望a …

generics kotlin

4
推荐指数
1
解决办法
1642
查看次数

标签 统计

generics ×1

kotlin ×1