, MetricCategory.Async.toString(), . :
class MetricCategory {
object Async {
override fun toString(): String {
return "Async"
}
}
}
true, true. , === :
true , a b .
2 ? JVM ( runtimes), string interning:
- , . , , . .
JVM, .
class MetricCategory {
object Async {
override fun toString(): String {
val result = "a".toUpperCase() + "SYNC".toLowerCase()
return result.intern()
}
}
}
true, true, , String.intern.
:
println("Async" == "Async") // true, obviously
println("Async" === "Async") // true, string interning for literals
println("Async" == java.lang.String("Async").toString())// true, obviously
println("Async" === java.lang.String("Async").toString()) // false, new instance on the right
println("Async" === java.lang.String("Async").toString().intern()) // true, right changed to shared instance
: