Rumah >Java >javaTutorial >Gabungan generik dan refleksi fungsi Java
Generik fungsi digabungkan dengan refleksi menghasilkan kod yang fleksibel dan berskala. Generik berfungsi menyokong jenis berparameter, manakala refleksi membenarkan mendapatkan semula metadata tentang kelas dan medan. Dengan menggabungkan kedua-duanya: anda boleh mencipta fungsi generik yang menerima parameter pelbagai jenis. Gunakan refleksi untuk mendapatkan maklumat kelas dan medan, walaupun jenis ditentukan pada masa jalan. Cipta fungsi fleksibel untuk jenis objek yang berbeza tanpa menulis kod khusus jenis.
Generik fungsi Java digabungkan dengan refleksi
Generik Java membolehkan kami mencipta jenis berparameter supaya jenis boleh ditentukan pada masa jalan. Refleksi membolehkan kami mendapatkan semula metadata tentang kelas, kaedah dan medan. Menggabungkan dua ciri berkuasa ini membolehkan anda mencipta kod yang fleksibel dan boleh skala.
Generik fungsi membolehkan kami mentakrifkan fungsi yang menerima pelbagai jenis parameter. Sebagai contoh, kita boleh mencipta fungsi generik yang menukar dua elemen tanpa mengisytiharkan jenis tertentu:
<T> void swap(T a, T b) { T temp = a; a = b; b = temp; }
Reflection membolehkan kami mengakses maklumat masa jalan tentang kelas, kaedah dan medan. Kita boleh menggunakan refleksi untuk:
Menggabungkan generik berfungsi dengan pantulan membolehkan kami mencipta kod yang fleksibel dan boleh dikembangkan untuk jenis objek yang berbeza. Sebagai contoh, kita boleh mencipta fungsi generik untuk menukar nilai objek kepada rentetan tanpa mengira jenisnya:
import java.lang.reflect.Field; public class ObjectToStringConverter { public static <T> String convertToString(T object) { StringBuilder sb = new StringBuilder(); Class<?> clazz = object.getClass(); // 获取所有字段 Field[] fields = clazz.getDeclaredFields(); // 遍历所有字段并追加其名称和值 for (Field field : fields) { try { field.setAccessible(true); sb.append(field.getName()).append(": ").append(field.get(object)).append("\n"); } catch (IllegalAccessException e) { e.printStackTrace(); } } return sb.toString(); } }
Contoh praktikal:
Kita boleh menggunakan fungsi ini untuk jenis objek yang berbeza tanpa menulis Kod khusus jenis:
// 创建一个 Person 类 class Person { private String name; private int age; // ... 构造函数和 getter/setter ... } // 创建一个 Book 类 class Book { private String title; private String author; // ... 构造函数和 getter/setter ... } // 测试 convertToString 函数 Person person = new Person("John", 30); Book book = new Book("Java Programming", "Author"); System.out.println(ObjectToStringConverter.convertToString(person)); System.out.println(ObjectToStringConverter.convertToString(book));
Output:
name: John age: 30 title: Java Programming author: Author
Atas ialah kandungan terperinci Gabungan generik dan refleksi fungsi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!