小编Ale*_*exT的帖子

Kotlin / Java 在 Int 类型的 switch 语句中使用枚举

对于 Android 项目,我有一个 .kt 文件:

class foo () {
    enum class animal (var Id: Int) {
        CAT(0),
        DOG(1),
        FISH(2),
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个 .java 文件,其中出现问题:

public void processAnimal(int animalId) {
    switch(animalId) {
        case foo.animal.CAT.Id:
            //do something
            break;
        case foo.animal.DOG.Id:
            //do something else
            break;
        case foo.animal.FISH.Id:
            //do something fishy
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

.Id给出了一个错误“Id has private access in foo.animal”,所以这不起作用。

由于 switch 语句,更改.Id为“需要常量表达式”。.getId()

这是我无法控制的要求,而不是int签名animal中的类型public void processAnimal(int animalId) {,如果它不是我无法控制的,这将是正确的解决方案。

在 .kt 文件中将字段标记为公共不会改变任何内容。

有没有办法实现我打算做的事情?

谢谢你!

java kotlin

3
推荐指数
1
解决办法
6628
查看次数

如何设置 Kotlin 中的每个循环以避免越界异常

在java中我得到了这个结构

for (let i = 0; i < x.length-1; I++
Run Code Online (Sandbox Code Playgroud)

在这里为了避免outOfBoundsException我们使用x.length-1但是如何在 Kotlin 中做同样的事情?到目前为止我得到了这个代码

x.forEachIndexed { index, _ ->
    output.add((x[index+1]-x[index])*10)
}
Run Code Online (Sandbox Code Playgroud)

当我们调用时它在最后一个元素上崩溃,x[index+1]所以我需要以某种方式处理最后一个元素

输入列表

var x = doubleArrayOf(0.0, 0.23, 0.46, 0.69, 0.92, 1.15, 1.38, 1.61)
Run Code Online (Sandbox Code Playgroud)

kotlin

3
推荐指数
2
解决办法
1218
查看次数

标签 统计

kotlin ×2

java ×1