我想看看编译后的字节码,这样我就可以了解它在封面下的工作原理.我正在使用IntelliJ IDEA 15,但找不到查看字节码的方法.我错过了什么?
我有一个Short变量,我需要检查的值.但编译器抱怨说Operator '==' cannot be applied to 'Short' and 'Int'当我做一个简单的等于检查时:
val myShort: Short = 4
if (myShort == 4) // <-- ERROR
println("all is well")
Run Code Online (Sandbox Code Playgroud)
那么最简单,"最干净"的方法是什么等于检查?
以下是我尝试过的一些事情(说实话,我都不喜欢).
第一个将4整数转换为short(看起来很奇怪,在原始数字上调用一个函数)
val myShort: Short = 4
if (myShort == 4.toShort())
println("all is well")
Run Code Online (Sandbox Code Playgroud)
下一个将短路转换为int(不应该是必要的,现在我有两个整数,当我不需要任何时候)
val myShort: Short = 4
if (myShort.toInt() == 4)
println("all is well")
Run Code Online (Sandbox Code Playgroud) 我需要让一个班级引用另一个班级。不是创建它的副本,而是对已经存在的实例进行实际引用。
我也许可以用一个例子更好地解释它。我们有没有课Image:
class Image(imgPath: String) {
val height : Int
val width : Int
val rgbMatrix: MutableList< MutableList< Triple<Int, Int, Int> > >
/* ... etc. ... */
}
Run Code Online (Sandbox Code Playgroud)
现在说我想要一个ImageManager只引用一个已经存在的类Image:
class ImageManager(val img: Image) {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
所以我可以有这种行为:
val image = Image("/res/images/image.png")
val imageManager = ImageManager(image)
// Setting the pixel at (125, 25) to black
imageManager.img.rgbMatrix[125, 25] = Triple(0, 0, 0)
// Should print the update value(0, 0, 0)
print( image.rgbMatrix[125, 25] …Run Code Online (Sandbox Code Playgroud)