通過反射認識泛型的本質
通過 Class 和 Method 來認識泛型的本質,在編譯階段驗證是否有錯誤。
如果我們繞過編譯就繞過泛型。
來看一個demo
- package practice.Reflect;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- /**
- * @Author: 言曌
- * @Date: 2017/11/17
- * @Time: 上午10:27
- */
- public class MethodDemo2 {
- public static void main(String args[]) {
- //什麼型別都可以新增
- ArrayList list = new ArrayList();
- list.add("hello");
- list.add(2017);
- list.add(true);
- System.out.println(list);
- //只能新增String型別的元素
- ArrayList<String> list1 = new ArrayList<String>();
- list1.add("hello");
- //list1.add(2017);//錯誤
- Class c1 = list.getClass();
- Class c2 = list1.getClass();
- System.out.println(c1 == c2);//true
- //反射的操作都是編譯之後的操作
- /**
- * c1==c2結果返回true說明編譯之後集合的泛型是去泛型化的
- * Java中集合的泛型,是防止錯誤輸入的,只在編譯階段有效
- * 繞過編譯就無效了
- * 驗證:我們可以通過方法的反射來操作,繞過編譯
- */
- try {
- Method m = c1.getMethod("add",Object.class);
- m.invoke(list1,100);//繞過編譯就繞過了泛型
- System.out.println(list1.size());
- System.out.println(list1);
- } catch (Exception e) {
- e.printStackTrace();
- }
- //最終我們確定,Class,Method,Field,反射操作 都是繞過編譯的,都是在執行時刻來執行的
- }
- }
最終我們得出結論,Class,Method,Field,反射操作 都是繞過編譯的,都是在執行時刻來執行的 。
相關文章
- 認識Java泛型Java泛型
- 再次認識java泛型Java泛型
- C# 透過反射(Reflection)呼叫不同名泛型方法C#反射泛型
- 一句話,講清楚java泛型的本質(非型別擦除)Java泛型型別
- 【Java反射】Java 泛型基礎Java反射泛型
- 如何用反射呼叫泛型類的方法反射泛型
- Java反射給泛型集合賦值Java反射泛型賦值
- Go中泛型和反射比較指南Go泛型反射
- Gson通過藉助TypeToken獲取泛型引數的型別的方法泛型型別
- Java泛型知識Java泛型
- 007 通過連結串列學Rust之支援泛型Rust泛型
- 8.集合、泛型、列舉、註解、反射泛型反射
- Java進階 | 泛型機制與反射原理Java泛型反射
- 知性的認識——叔本華
- Go Internals: Go 反射 vs Java 泛型 vs cpp 模板Go反射Java泛型
- 讓概率統計通過一本好書,一舉突破你的數學認識盲點!
- 關於Java中泛型、反射和註解的掃盲篇Java泛型反射
- 通過實現仿照FeignClient框架原理的示例來看清FeignClient的本質client框架
- 泛型--泛型萬用字元和泛型的上下限泛型字元
- 認知篇:CQRS架構模式的本質架構模式
- Kotlin知識歸納(十二) —— 泛型Kotlin泛型
- corejava基礎知識(3)-泛型Java泛型
- 泛型類、泛型方法及泛型應用泛型
- 【java】【泛型】泛型geneticJava泛型
- ViewPager(通過反射修改viewpager切換速度)Viewpager反射
- 程式語言:型別系統的本質型別
- 型別的本質:對變數、型別、指標的理解型別變數指標
- Java知識點總結(Java泛型)Java泛型
- 一. 重識Java之夯實泛型Java泛型
- 泛型類和泛型方法泛型
- 泛型類、泛型方法、型別萬用字元的使用泛型型別字元
- Flutter | 通過一個小例子帶你認識動畫 AnimationFlutter動畫
- 多執行緒程式設計總結:一、認識多執行緒本質執行緒程式設計
- 通過反射獲取私有內部類物件反射物件
- [轉載] python通過反射執行程式碼Python反射行程
- TypeScript 泛型介面和泛型類TypeScript泛型
- Go 泛型之泛型約束Go泛型
- Java基礎知識掃盲(四)——泛型Java泛型