最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java輸入年份和月份判斷多少天實例代碼

    Java輸入年份和月份判斷多少天實例代碼

    這篇文章主要給大家介紹了關(guān)于Java輸入年度和月份判斷多少天的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • IDEA使用Maven創(chuàng)建父與子多模塊項目的圖文教程

    IDEA使用Maven創(chuàng)建父與子多模塊項目的圖文教程

    在?IntelliJ?IDEA?中使用?Maven?創(chuàng)建父與子多模塊項目是一個常見的開發(fā)實踐,有助于更好地組織和管理代碼,所以本文小編給大家介紹了IDEA使用Maven創(chuàng)建父與子多模塊項目的圖文教程,需要的小伙伴跟著小編一起來看看吧
    2025-03-03
  • Java線程池使用與原理詳解

    Java線程池使用與原理詳解

    這篇文章主要為大家詳細(xì)介紹了Java線程池使用與原理的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • java實戰(zhàn)之猜字小游戲

    java實戰(zhàn)之猜字小游戲

    這篇文章主要介紹了java實戰(zhàn)之猜字小游戲,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助呦,需要的朋友可以參考下
    2021-04-04
  • Java如何實現(xiàn)登錄token令牌

    Java如何實現(xiàn)登錄token令牌

    這篇文章主要介紹了Java如何實現(xiàn)登錄token令牌,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • idea快速實現(xiàn)將SpringBoot項目打包Docker鏡像并部署

    idea快速實現(xiàn)將SpringBoot項目打包Docker鏡像并部署

    本文主要介紹了idea快速實現(xiàn)將SpringBoot項目打包Docker鏡像并部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • SpringBoot整合ShardingSphere5.x實現(xiàn)數(shù)據(jù)加解密功能(最新推薦)

    SpringBoot整合ShardingSphere5.x實現(xiàn)數(shù)據(jù)加解密功能(最新推薦)

    這篇文章主要介紹了SpringBoot整合ShardingSphere5.x實現(xiàn)數(shù)據(jù)加解密功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Java編寫簡單計算器的完整實現(xiàn)過程

    Java編寫簡單計算器的完整實現(xiàn)過程

    這篇文章主要給大家介紹了關(guān)于Java編寫簡單計算器的完整實現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • jvm垃圾回收GC調(diào)優(yōu)基礎(chǔ)原理分析

    jvm垃圾回收GC調(diào)優(yōu)基礎(chǔ)原理分析

    談到調(diào)優(yōu),這一定是針對特定場景、特定目的的事情, 對于 GC 調(diào)優(yōu)來說,首先就需要清楚調(diào)優(yōu)的目標(biāo)是什么?從性能的角度看,通常關(guān)注三個方面,內(nèi)存占用(footprint)、延時(latency)和吞吐量(throughput)
    2022-01-01
  • MyBatis-Plus實現(xiàn)2種分頁方法(QueryWrapper查詢分頁和SQL查詢分頁)

    MyBatis-Plus實現(xiàn)2種分頁方法(QueryWrapper查詢分頁和SQL查詢分頁)

    本文主要介紹了MyBatis-Plus實現(xiàn)2種分頁方法,主要包括QueryWrapper查詢分頁和SQL查詢分頁,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08

最新評論

柞水县| 昭通市| 铜鼓县| 泾阳县| 南溪县| 卢湾区| 梁河县| 长葛市| 合水县| 辽宁省| 甘谷县| 松滋市| 阿勒泰市| 平江县| 志丹县| 阜阳市| 兴宁市| 棋牌| 江阴市| 北海市| 平塘县| 吉木萨尔县| 门源| 抚远县| 建平县| 苏尼特右旗| 内丘县| 隆林| 龙井市| 蓝田县| 广西| 合江县| 泸州市| 新泰市| 明水县| 禄劝| 玛纳斯县| 绥滨县| 巨鹿县| 霍城县| 犍为县|