sebagai berikut:
Objek publik InvokeMethod (String className, String MethodName, Object [] args) melempar Exception {class ownerClass = class.forname (className); Object Owner = ownerClass.newInstance (); Class [] argsclass = kelas baru [args.length]; untuk (int i = 0, j = args.length; i <j; i ++) {argsclass [i] = args [i] .getClass (); } Metode metode = ownerclass.getMethod (methodName, argsclass); return method.invoke (pemilik, args);}Namun, dalam aplikasi kami yang sebenarnya, kami juga akan menghadapi situasi di mana parameter aktual yang masuk dan parameter formal dari metode yang akan dipanggil mungkin tidak sepenuhnya konsisten:
Misalnya, ketika metode di struts1.x dipanggil, ia akan memiliki parameter tipe httpservletResponse.
Di Tomcat, contoh objek permintaan sebenarnya: org.apache.catalina.connector.Responsefacade
Ini mengimplementasikan antarmuka: javax.servlet.http.httpservletResponse;
Jika kami secara langsung memperlakukan objek permintaan dalam wadah web sebagai parameter dan meneruskannya ke cuplikan kode di atas, akan ada masalah. Pada saat ini, metode penanganan kami seperti ini. Beraksi, metode ini umumnya seperti:
Tindakan Publik Permintaan (pemetaan aksi, formulir ActionForm,
Permintaan httpservletrequest, respons httpservletresponse)
Responsnya umumnya terletak di yang keempat, jadi mari kita ubah kode di atas:
Bundel
untuk (int i = 0, j = args.length; i <j; i ++) {argsclass [i] = args [i] .getClass (); }Ubah ke:
untuk (int i = 0, j = args.length; i <j; i ++) {if (i == 3) {argsclass [i] = httpservletResponse.class; } else {argsclass [i] = args [i] .getClass (); }}Ringkasan di atas (disarankan) dari memanggil metode tertentu secara dinamis melalui mekanisme refleksi Java adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.