亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java反射之通過反射了解集合泛型的本質(zhì)(詳解)

 更新時間:2017年06月05日 08:24:22   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava反射之通過反射了解集合泛型的本質(zhì)(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文接上文“java反射之方法反射的基本操作方法”,利用反射了解下java集合中泛型的本質(zhì)

1、初始化兩個集合,一個使用泛型,一個不使用

ArrayList list1 = new ArrayList();
ArrayList<String> list2 = new ArrayList<String>();

2、有定義類型可得在list2中添加int類型會報錯

list2.add("Hello");
list2.add(20); //報錯

3、獲取兩個對象的類類型進行比較

Class c1 = list1.getClass();
Class c2 = list2.getClass();
System.out.println(c1 == c2);

通過c1==c2結(jié)果返回true,說明編譯之后集合的泛型是去泛型化的,java中集合的泛型是為了防止錯誤輸入的,只在編譯階段有效,繞過編譯就無效了

4、驗證:通過方法的反射來繞過編譯

try {
 Method m = c2.getMethod("add", Object.class);
 m.invoke(list2,20);
 System.out.println(list2);
} catch (Exception e) {
 e.printStackTrace();
}

5、輸出結(jié)果

6、完整代碼

package com.format.test;

import java.lang.reflect.Method;
import java.util.ArrayList;

/**
 * Created by Format on 2017/6/4.
 */
public class Test2 {
 public static void main(String[] args) {
  ArrayList list1 = new ArrayList();
  ArrayList<String> list2 = new ArrayList<String>();
  list2.add("Hello");
//  list2.add(20); //報錯
  Class c1 = list1.getClass();
  Class c2 = list2.getClass();
  System.out.println(c1 == c2);
  /**
   * 反射操作都是編譯之后的操作
   * c1==c2結(jié)果返回true,說明編譯之后集合的泛型是去泛型化的
   * java中集合的泛型是為了防止錯誤輸入的,只在編譯階段有效,繞過編譯就無效了
   * 驗證:通過方法的反射來繞過編譯
   */
  try {
   Method m = c2.getMethod("add", Object.class);
   m.invoke(list2,20);
   System.out.println(list2);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

以上這篇java反射之通過反射了解集合泛型的本質(zhì)(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java類加載機制、類加載器、自定義類加載器的案例

    java類加載機制、類加載器、自定義類加載器的案例

    這篇文章主要介紹了java類加載機制、類加載器、自定義類加載器的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

    SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 通過Mybatis實現(xiàn)單表內(nèi)一對多的數(shù)據(jù)展示示例代碼

    通過Mybatis實現(xiàn)單表內(nèi)一對多的數(shù)據(jù)展示示例代碼

    最近做項目遇到這樣的需求要求將表中的數(shù)據(jù),按照一級二級分類返回給前端json數(shù)據(jù),下面通過本文給大家分享通過Mybatis實現(xiàn)單表內(nèi)一對多的數(shù)據(jù)展示示例代碼,感興趣的朋友參考下吧
    2017-08-08
  • Java 超詳細圖解集合框架的數(shù)據(jù)結(jié)構(gòu)

    Java 超詳細圖解集合框架的數(shù)據(jù)結(jié)構(gòu)

    什么是集合框架呢?集合框架是為表示和操作集合而規(guī)定的一種統(tǒng)一的標準的體系結(jié)構(gòu)。最簡單的集合如數(shù)組、列表和隊列等,任何集合框架一般包含:對外的接口、接口的實現(xiàn)和對集合運算的算法
    2022-04-04
  • tk.mybatis擴展通用接口使用詳解

    tk.mybatis擴展通用接口使用詳解

    這篇文章主要介紹了tk.mybatis擴展通用接口使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • java中Swing會奔跑的線程俠

    java中Swing會奔跑的線程俠

    本文通過代碼示例給大家詳細講解了java中Swing會奔跑的線程俠這個經(jīng)典的示例,有興趣的朋友學習下。
    2018-03-03
  • java ThreadLocal線程局部變量常用方法使用場景示例詳解

    java ThreadLocal線程局部變量常用方法使用場景示例詳解

    這篇文章主要介紹了為大家java ThreadLocal線程局部變量常用方法使用場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • JVM中的程序計數(shù)寄存器PC是什么詳解

    JVM中的程序計數(shù)寄存器PC是什么詳解

    這篇文章主要介紹了JVM中的程序計數(shù)寄存器PC原理分析,JVM中的程序計數(shù)寄存器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存儲指令相關的現(xiàn)場信息
    2021-09-09
  • Java實現(xiàn)PDF轉(zhuǎn)圖片的三種方法

    Java實現(xiàn)PDF轉(zhuǎn)圖片的三種方法

    有些時候我們需要在項目中展示PDF,所以我們可以將PDF轉(zhuǎn)為圖片,然后已圖片的方式展示,效果很好,Java使用各種技術將pdf轉(zhuǎn)換成圖片格式,并且內(nèi)容不失幀,本文給大家介紹了三種方法實現(xiàn)PDF轉(zhuǎn)圖片的案例,需要的朋友可以參考下
    2023-10-10
  • Java程序命令行參數(shù)用法總結(jié)

    Java程序命令行參數(shù)用法總結(jié)

    這篇文章主要介紹了Java程序命令行參數(shù)用法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論