【问题标题】:Kotlin - equivalence to SomeClass.class for objects?Kotlin - 与对象的 SomeClass.class 等价?
【发布时间】:2017-05-29 06:49:16
【问题描述】:

我正在尝试静态获取对象的名称(用于日志记录)

等价于:

public class SomeClass
{
    private static final String TAG = SomeClass.class.getSimpleName()
}

在 Kotlin 中:

object SomeObject
{
   private const val TAG = ?
}

【问题讨论】:

标签: java android kotlin


【解决方案1】:

试试这个

SomeClass::class.simpleName

【讨论】:

  • kotlin.jvm.KotlinReflectionNotSupportedError 怎么样?需要对 kotlin-reflect.jar 的额外依赖。也许会更好使用 ::class.java.simpleName
【解决方案2】:

如果你在 Android 应用程序中使用它,我建议你这样做:(packageName:className)

object SomeObject
{
    private val TAG = "${SomeObject::class.java.`package`.name}:${SomeObject::class.simpleName}"
}

这样做可以确保任何其他类的标签名称不会重复。 如果您正在创建某人可以使用的 lib/code sn-p,这真的很有帮助。否则具有相同的标签名称可能会导致运行时错误。

【讨论】:

  • 您可以使用class.name 获取完全限定名称。
  • 如果。在不同的包中,有同名的类吗?
猜你喜欢
  • 1970-01-01
  • 2011-01-24
  • 2013-12-21
  • 1970-01-01
  • 2018-12-22
  • 2016-07-05
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多