Saya ingin menyusun kembali tanda tangan suatu metode menggunakan refleksi di Java 8. Saya mengalami beberapa masalah dengan metode umum. Secara khusus, saya tidak menemukan apa pun untuk membantu memulihkan informasi tentang kasus "meluas" atau "super" dalam deklarasi tipe templat.
Berikut ini kasus pengujian khusus, berdasarkan kode sumber yang diketahui:
Tanda tangan metode dari kode sumber:public static <T extends AssertDelegateTarget> T assertThat(T assertion)
Pertama-tama, apakah ada cara elegan untuk menyusun kembali bagian <T extends AssertDelegateTarget>
tanpa harus mengurai String?
Inilah info utama yang dapat saya peroleh melalui refleksi:
method.toString()
:public static org.assertj.core.api.AssertDelegateTarget org.assertj.core.api.Assertions.assertThat(org.assertj.core.api.AssertDelegateTarget)
method.toGenericString()
:public static <T> T org.assertj.core.api.Assertions.assertThat(T)
Apa yang terjadi dengan "extends AssertDelegateTarget"?
method.getReturnType.toString()
:interface org.assertj.core.api.AssertDelegateTarget
method.getGenericParameterTypes()[0].getTypeName()
:T
Berdasarkan info refleksi di atas, saya dapat mengasumsikan hubungan antara T dan AssertDelegateTarget, namun bagaimana saya tahu apakah itu "meluas" atau "super"?