Java中的泛型和反射是非常重要的特性。泛型允許我們編寫可重用的代碼,而反射則允許我們在運行時獲取和操作類的信息。以下是有關這些特性的更多細節:
泛型
public class Box<T> { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } Box<String> stringBox = new Box<>(); stringBox.set("Hello World"); Box<Integer> intBox = new Box<>(); intBox.set(10);
以上代碼中,我們定義了一個泛型類Box,它可以接受任何類型的數據。然后我們實例化Box并分別使用String和Integer類型進行設置,取回數據時也返回相應的類型。這意味著我們可以在不同的場景中重用同一份代碼,而不必為每種類型都寫一份代碼。
反射
class Example { private String name; public int age; public Example(String name, int age) { this.name = name; this.age = age; } public void printName() { System.out.println("Name: " + name); } public void printAge() { System.out.println("Age: " + age); } } Example example = new Example("John", 25); Class clazz = example.getClass(); Field[] fields = clazz.getDeclaredFields(); Method[] methods = clazz.getDeclaredMethods(); for(Field field : fields) { System.out.println("Field name: " + field.getName()); } for(Method method : methods) { System.out.println("Method name: " + method.getName()); }
以上代碼中,我們定義了一個Example類,它包含一個私有字符串屬性name和一個公開整數屬性age,以及兩個公開的打印屬性方法。然后我們創建一個Example對象并獲取它的類信息。我們使用反射獲取類的所有屬性和方法,并對它們進行操作。在這個例子中,我們只是簡單地打印出屬性和方法的名稱,但是在實際開發中,我們可以通過反射來創建新對象、調用方法和訪問屬性。
上一篇css中列表位置在哪