2016-10-01 7 views
5

कहते हैं, मैं एनोटेशन के साथ एक Kotlin वर्ग है:Kotlin - कैसे एनोटेशन विशेषता मान प्राप्त करने के लिए

@Entity @Table(name="user") data class User (val id:Long, val name:String) 

मैं @Table टिप्पणी से नाम विशेषता के मान कैसे मिल सकता है?

fun <T> tableName(c: KClass<T>):String { 
    // i can get the @Table annotation like this: 
    val t = c.annotations.find { it.annotationClass == Table::class } 
    // but how can i get the value of "name" attribute from t? 
} 

उत्तर

7

आप बस कर सकते हैं:

val table = c.annotations.find { it is Table } as? Table 
println(table?.name) 

ध्यान दें, मैं is ऑपरेटर इस्तेमाल किया के बाद से एनोटेशन RUNTIME प्रतिधारण है और इसलिए यह संग्रह के भीतर Table एनोटेशन का एक वास्तविक उदाहरण है। लेकिन किसी भी टिप्पणी के लिए निम्न कार्य:

val table = c.annotations.find { it.annotationClass == Table::class } as? Table 
+0

'' find' firstOrNull' के बराबर है, नहीं ' – Ilya

+0

हां first', मेरे मन में यह पीछे की ओर अस्थायी रूप से, बस सरलीकृत किया गया, इस सवाल का जवाब यह के बारे में चिंता नहीं। –

संबंधित मुद्दे