我希望能够从它的伴随对象访问我的类的 simpleName。
我想要这个:
val o1 = Outer("foo")
val o2 = Outer("bar")
打印以下输出:
Outer: hello
Outer: foo
Outer: bar
实际用例在java中是这样的:
class Outer {
static final String TAG = Outer.class.simpleName();
// and now I'm able to use Outer.TAG or just TAG in both static and non-static methods
}
我尝试了两件事:
将 Outer 的 simpleName 分配给伴随对象的 COMPANION_TAG,然后从伴随对象的 init 和 Outer 的所有函数中使用 COMPANION_TAG。我可以从我需要的任何地方访问 COMPANION_TAG,但不幸的是,我只能通过这种方式获得“Companion”而不是“Outer”。
从伴随对象的 init 访问 Outer.OUTER_TAG。这里的问题是我找不到访问它的方法。
这是代码:
class Outer(str: String) {
private val OUTER_TAG = javaClass.simpleName
companion object {
@JvmStatic val COMPANION_TAG = PullDownAnimationLayout.javaClass.simpleName // gives "Companion" :(
init {
// how can I access OUTER_TAG?
Log.d(OUTER_TAG, "hello") // this gives an error
}
}
init {
Log.d(OUTER_TAG, str) // Outer: ... :)
Log.d(INNER_TAG, str) // Companion: ... :(
}
}
val o1 = Outer()
val o2 = Outer()