Bolehkah Kotlin menukar kaedah refleksi Java ke dalam fungsi peringkat lebih tinggi? Bagaimana untuk melakukannya jika boleh?
扔个三星炸死你
扔个三星炸死你 2017-06-23 09:13:40
0
1
702

Bolehkah Kotlin menukar kaedah pantulan Java kepada fungsi tertib tinggi? Bagaimana untuk melakukannya jika boleh?
Ini hanyalah contoh, pelaksanaan sebenar akan mengakibatkan ralat.

class A { fun haveFun(s:String){ print(s); } } fun main(args: Array) { val forName = Class.forName("com.gwsoft.tests.A") forName?.let { val method = forName.getMethod("haveFun", String::class.java) method?.let { val fu=method as ((s:String)-> Unit)//这里并不行 会报java.lang.reflect.Method cannot be cast to kotlin.jvm.functions.Function1 fu("呵呵呵"); } } }
扔个三星炸死你
扔个三星炸死你

membalas semua (1)
仅有的幸福

Refleksi tidak mungkin, tetapi untuk antara muka kaedah abstrak tunggal (Jenis SAM), Kotlin mempunyai mekanisme penukaran SAM apabila memanggil java, jadi anda boleh menggunakan lambda~
Sebagai contoh, view.post{dosomething()}, yang setara ke Fungsi pos yang memerlukan antara muka Runnable ditukar kepada fungsi tertib lebih tinggi.

Lagi: http://www.jianshu.com/p/6386...

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!