对于 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中我得到了这个结构
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)