2017-05-29 80 views
1

我試圖靜態獲取對象的名稱(記錄使用)Kotlin - 與SomeClass.class對象等價嗎?

的等價性:

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

在科特林:

object SomeObject 
{ 
    private const val TAG = ? 
} 
+0

這將是'Clz :: class.java.simpleName'。請參閱官方參考http://kotlinlang.org/docs/reference/reflection.html#class-references和SO在https://stackoverflow.com/questions/34340450/how-to-get-a-kotlin-kclass- from-a-package-class-name-string –

回答

5

試試這個

SomeClass::class.simpleName 
+0

怎麼樣kotlin.jvm.KotlinReflectionNotSupportedError?需要額外的依賴kotlin-reflect.jar。也許會更好地使用:: class.java.simpleName – user1221256

0

如果您在Android應用程序中使用它,我建議您按照以下方式進行操作ng:(packageName:className)

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

這樣做可以確保任何其他類的標記名不會重複。 如果您正在創建某人可以使用的lib /代碼片段,這非常有幫助。否則具有相同的標籤名稱可能會導致運行時錯誤。

+0

您可以使用'class.name'來獲取完全限定的名稱。 –

+0

如果。在不同的包中,有一個同名的類在那裏? – chandil03