1.0.1より前のバージョンのKotlinからいくつかのコードを見直しても、拡張プロパティが機能しなくなったようです。実際には、それでもやりますが、もはやそれを無効にすることはできません。V1.5.1でKotlin拡張プロパティが認識されない
は、このクラスを考えてみましょう:
class TestClass {
override val loggerName: String
get() = "A new name"
fun aMethod() {
info("test info message")
}
}
事前Kotlin 1.0.1あなたは次の拡張子があれば、これは動作します:
val Any.loggerName: String
get() = javaClass.simpleName!!
fun Any.info(message: String) {
//...
}
loggerNameはデフォルトで問題のインスタンスのクラス名を取るだろうし。現在、loggerNameはこの場合はTestClassに正しく割り当てられていますが、無効にすることはできません。
これは、この新しいバージョンのKotlinでは偶発的なバグか新しい制限ですか?私はKotlin - Extensionsを検索しましたが、それはうまくいくはずです。
テクニカル要因:
私はKotlinのプラグインのバージョン1.0.1リリース - IJ143-32とのIntelliJ IDEA 2016.1でこれをテストしてい。
EDIT 1:それが認識されている:
TestClassを(instanceOfTestClass.loggerName
例)のインスタンスにアクセスするときTestClassをもがこのプロパティを認識しません。
輸入品はありますか? – razzledazzle
使用しているスタジオのバージョンは? – pRaNaY