2017-11-20 107 views
5

Ben başka aktiviteyi açılması için bu kodu kullanılan KOTLIN
yeni:kotlin'de "::" ne anlama geliyor?

startActivity(Intent(this,IntroAndLang::class.java)) 

mevcut etkinlik ve hedef faaliyet değildir tek : yerine orada neden

ben anlayamıyorum KOTLIN

yazılır docs belirtildiği gibi IntroAndLang::class.java

+0

: bildirim amaçlı :: bir operatördür. Bakınız [burada] (https://kotlinlang.org/docs/reference/reflection.html). – m0skit0

+0

@ m0skit0 teşekkürler, neden kotlin sınıfını kullandığım class.java? – Winner1

+0

Android API sadece Java sınıflarını kabul eder, bu yüzden bir Java sınıfını geçmeniz gerekir. IntroAndLang :: class' 'KClass' (bir Kotlin sınıfı) döndürür, sonra' .java' Java sınıfını döndürür. Tüm Kotlin sınıflarının, sonunda Java sınıflarına ('.class' binaries) derlendiğini unutmayın. – m0skit0

cevap

5

de :: bu sınıf referans olup:

Sınıf Referanslar: en temel yansıma özelliği Kotlin sınıfına çalışma zamanı referansı oluyor. Bir Kotlin sınıf referans bir Java sınıfı referans olarak aynı olmadığını

val c = MyClass::class 
//The reference is a value of type KClass. 

Not: Bir statik bilinen Kotlin sınıfına başvuru edinmek için, sınıf değişmez sözdizimini kullanabilirsiniz. Bir Java sınıfı referansı elde etmek için, bir KClass örneğindeki .java özelliğini kullanın.

list.forEach(::println) 

Bu Kotlin Standart kütüphanesinde belirlenen println belirtmektedir:

Bu da bu basit örnekte olduğu gibi bir yöntem referanslar sözdizimi.

+0

':: println' ve' IntroAndLang :: class', '::' işlevini kullanmasına rağmen ilgisizdir. Yöntem referansı bir 'KClass' için değerlendirilemedi, bir SAM türü değil! –

+0

Doğru cevap bu değildi, ben değiştirdim – s1m0nw1