相关疑难解决方法(0)

如何从Kotlin的资源中读取文本文件?

我想在Kotlin写一个Spek测试.测试应从该src/test/resources文件夹中读取HTML文件.怎么做?

class MySpec : Spek({

    describe("blah blah") {

        given("blah blah") {

            var fileContent : String = ""

            beforeEachTest {
                // How to read the file file.html in src/test/resources/html
                fileContent = ...  
            }

            it("should blah blah") {
                ...
            }
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

kotlin

66
推荐指数
10
解决办法
4万
查看次数

instance :: class.java与instance.javaClass

鉴于Kotlin 1.1.对于instance一些类,instance::class.javainstance.javaClass似乎是等效的:

val i = 0
println(i::class.java) // int
println(i.javaClass) // int
println(i::class.java === i.javaClass) // true
Run Code Online (Sandbox Code Playgroud)

然而,有一个微妙的区别:

val c1: Class<out Int> = i::class.java
val c2: Class<Int> = i.javaClass
Run Code Online (Sandbox Code Playgroud)

instance.javaClass可忽略地缩短,但instance::class.java与类型的相应用法更加一致.虽然您可以.javaClass在某些类型上使用,但结果可能不是您所期望的:

println(i::class.java === Int::class.java) // true
println(i.javaClass === Int.javaClass) // false
println(Int::class.java === Int.javaClass) // false
println(Int.javaClass) // class kotlin.jvm.internal.IntCompanionObject
Run Code Online (Sandbox Code Playgroud)

所以,我认为最好永远不要使用.javaClass更多的一致性.有没有反对的论据?

reflection kotlin

15
推荐指数
1
解决办法
2052
查看次数

标签 统计

kotlin ×2

reflection ×1