编码样式:使用类型为null的函数调用

时间:2018-05-30 23:47:15

标签: java kotlin

E.g。 Java类java.awt.image.Raster有多个重载方法,比如

double[] getPixel(int x, int y, double[] dArray)
float[] getPixel(int x, int y, float[] fArray)
int[] getPixel(int x, int y, int[] iArray)

允许用null作为数组调用方法,但如何在Kotlin中正确执行?

val pixel = raster.getPixel(1, 2, null)

由于含糊不清而失败

val pixel = raster.getPixel(1, 2, null as IntArray)

发出警告“此演员阵容永远不会成功”。

有没有办法调用函数,以便它完全取悦编译器?

1 个答案:

答案 0 :(得分:3)

"这个演员阵容永远不会成功"指的是IntArray不是可空类型的事实,因此尝试将null转换为IntArray总是会失败。

由于java引用类型总是为null,我希望kotlin将int[]视为IntArray?(至少在没有@Nonnull注释的情况下),等等null as IntArray?就是你想要的。

e.g。

val pixel = raster.getPixel(1, 2, null as IntArray?)