反射(泛型的擦除)

2021-08-19 22:15:20 字數 413 閱讀 4599

實用價值低,僅僅是用來測試反射的掌握

上**

arrayarr = new array();

//這個arr只能用來儲存string

//若是直接用反射,則可以儲存任意物件

class c = arr.getclass();

method method = c.get("add",object);//由於add()方法本來的引數是泛型 但是class檔案裡面並沒有泛型,所以便是object

//呼叫成員方法時候需要有乙個依附的物件

object obj = c.newinstance();

method.invoke(obj,1);

method.invoke(obj,"aaa");

這樣的話便除去了泛型的限制,但是若是遍歷的話就很難

Java泛型擦除

class person public class test else 上面的例子執行 equal這裡列印出equal的原因,list和list list擦除後的型別都是list,沒有任何區別。其實泛型的class物件都是相同的,泛型化不會改變class屬性的返回值。再看看下面的例子 private...

泛型擦除補償

由於在使用泛型的時候,將會擦除型別引數,而只保留原始型別。所以在使用泛型時,我們不能使用new t 也不能使用instanceof,因為這兩類操作要知道確切的型別。此問題的解決方案有三種 設計模式的使用 簡單工廠 最簡單 工廠方法 最靈活 模板方法 最簡捷 1.簡單工廠 在此方法中,將型別作為引數,...

泛型 泛型類 泛型方法 泛型擦除

1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...