日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java反射泛型类型,【Java反射】Java 泛型基础

發布時間:2025/4/5 java 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java反射泛型类型,【Java反射】Java 泛型基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java Reflect

綜述

方法的反射

成員變量的反射

構造函數的反射

類加載機制

在面向對象的世界里,萬事萬物皆對象。

但在Java里面有兩樣東西不是對象:靜態的成員、普通數據類型類(但它們有封裝類彌補)

類是對象,類是 java.lang.Class 的實例對象(There is a class named Class)

package com.gcusky.reflect; class ClassDemo{ Foo foo = new Foo(); // Foo的實例對象 /** * foo 是 Foo 類的實例對象 * Foo 是 Class 類的實例對象,又叫類類型(class type) */ // 表示1 -> 任何一個類都有一個隱含的靜態成員變量class Class c1 = Foo.class; // 表示2 -> 已知該類對象可用getClass方法獲取類類型 Class c2 = foo.getClass(); // 表示3 -> 用類的全稱獲取 try { Class c3 = Class.forName("com.gcusky.reflect.Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } // 可以通過類的類類型創建該類的實例對象 try { Foo foo1 = (Foo)c1.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } class Foo

Java 動態加載類

Class.forName("類的全稱")

不僅表示了類的類類型,還代表了動態加載類

編譯時刻加載類是靜態加載類

運行時刻加載類是動態加載類

class Office{ public static void main(String[] args){ // new 創建對象,是靜態加載類,在編譯時就需要加載所有可能使用到的類 if("Word".equals(args[0])) { Word w = new Word(); w.start(); } // Class.forName 創建對象,是動態加載類,在運行時才加載 try { Class c = Class.forName(args[0]) Word w = (Word) c.newInstance(); // 通過類類型,創建該對象 w.start(); } catch (Exception e) { e.printStackTrace(); } } }

Java 獲取方法信息

基本的數據類型,

java.lang.reflect.Method 封裝了關于方法的操作

button" class="copyCode code-tool" data-toggle="tooltip" data-placement="top" data-clipboard-text="package com.gcusky.reflect; import java.lang.reflect.Method; public class Demo { /** * 打印類的信息,包括類的成員函數、成員變量 * @param obj 對象 */ public static void printClassMessage(Object obj) { // 要獲取類的信息,首先要獲取類的類類型 Class c = obj.getClass(); // 獲取類的全名 String fullName = c.getName(); /** * Method類:方法對象 * 一個成員方法就是一個Method對象 * getMethods()方法獲取的是所有的public的函數,包括父類繼承而來的 * getDeclaredMethods() 獲取的是所有該類自己聲明的方法,不問訪問權限 */ Method[] ms = c.getMethods(); // c.getDeclaredMethods(); for (int i = 0; i < ms.length; i++) { // 得到方法的返回類型 Class returnType = ms[i].getReturnType(); // 得到方法的名稱 String name = ms[i].getName(); // 獲取參數類型 Class[] paramTypes = ms[i].getParameterTypes(); } } }" title="" data-original-title="復制">

package com.gcusky.reflect; import java.lang.reflect.Method; public class Demo{ /** * 打印類的信息,包括類的成員函數、成員變量 * @param obj 對象 */ public static void printClassMessage(Object obj){ // 要獲取類的信息,首先要獲取類的類類型 Class c = obj.getClass(); // 獲取類的全名 String fullName = c.getName(); /** * Method類:方法對象 * 一個成員方法就是一個Method對象 * getMethods()方法獲取的是所有的public的函數,包括父類繼承而來的 * getDeclaredMethods() 獲取的是所有該類自己聲明的方法,不問訪問權限 */ Method[] ms = c.getMethods(); // c.getDeclaredMethods(); for (int i = 0; i < ms.length; i++) { // 得到方法的返回類型 Class returnType = ms[i].getReturnType(); // 得到方法的名稱 String name = ms[i].getName(); // 獲取參數類型 Class[] paramTypes = ms[i].getParameterTypes(); } } }

Java 獲取成員變量信息

成員變量也是對象

java.lang.reflect.Field 封裝了關于成員變量的操作

button" class="copyCode code-tool" data-toggle="tooltip" data-placement="top" data-clipboard-text=" /** * 成員變量也是對象,Field封裝了關于成員變量的操作 * getFields()獲取的是所有的public的成員變量 * getDeclaredMethods()獲取的是所有該類自己聲明的成員變量 */ Field[] fs = c.getDeclaredFields(); // c.getFields(); for (int i = 0; i < fs.length; i++) { // 得到成員變量的類型 Class fieldType = fs[i].getType(); String typeName = fieldType.getName(); // 得到成員變量的名稱 String fieldName = fs[i].getName(); }" title="" data-original-title="復制">

/** * 成員變量也是對象,Field封裝了關于成員變量的操作 * getFields()獲取的是所有的public的成員變量 * getDeclaredMethods()獲取的是所有該類自己聲明的成員變量 */ Field[] fs = c.getDeclaredFields(); // c.getFields(); for (int i = 0; i < fs.length; i++) { // 得到成員變量的類型 Class fieldType = fs[i].getType(); String typeName = fieldType.getName(); // 得到成員變量的名稱 String fieldName = fs[i].getName(); }

Java 獲取構造函數信息

/** * 構造函數也是對象 * java.lang.Constructor中封裝了構造函數的信息 */ Constructor[] cs = c.getDeclaredConstructors(); for (Constructor constructor : cs) { constructor.getName(); Class[] paramType = constructor.getParameterTypes(); }

Java 方法的反射

如何獲取某個方法:方法的名稱和方法的參數列表才能唯一決定某個方法

方法反射的操作:method.invoke(對象, 參數列表)

class A{ public void print(int a, int b){ System.out.println(a + b); } } A a = new A(); Class c = a.getClass(); try { // Method m = c.getMethod("print", new Class[]{int.class, int.class}); Method m = c.getMethod("print", int.class, int.class); // Object o = m.invoke(a, new Object[]{10, 20}); Object o = m.invoke(a, 10, 20); } catch (Exception e) { e.printStackTrace(); }

Java 類加載機制

ArrayList list = new ArrayList(); ArrayListlist1 = new ArrayList(); list == list1; // true list1.add(20); // error - 編譯檢測出錯" title="" data-original-title="復制">

ArrayList list = new ArrayList(); ArrayList list1 = new ArrayList(); list == list1; // true list1.add(20); // error - 編譯檢測出錯

反射都是編譯之后的操作,因此可看出泛型在編譯之后會被擦除

Java 中集合的泛型用于防止錯誤輸入,只在編譯階段有效,繞過編譯則無效

Class c = list1.getclass(); try { Method m = c.getMethod("add", Object.class); m.invoke(list1, 20); // correct - 繞過編譯操作就繞過了泛型 } catch (Exception e) { e.printStackTrace(); }

總結

以上是生活随笔為你收集整理的java反射泛型类型,【Java反射】Java 泛型基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美激情另类 | 黄片毛片一级 | 国产在线观看不卡 | 黄色裸体片| 亚洲福利电影网 | 蜜桃视频一区二区三区 | 玩日本老头很兴奋xxxx | 日本在线免费看 | 国产乱码精品一区二三区蜜臂 | chinese麻豆gay勾外卖 | 在线成人播放 | 亚欧日韩av| 毛茸茸成熟亚洲人 | 在线观看三级网站 | 插插插日日日 | 国产成人免费av | 国产成人精品视频在线观看 | 免费观看91视频 | 最新中文字幕av | 日韩性av | 亚洲国产精品久久久久婷蜜芽 | 日韩精品一区二区在线观看 | 久久噜噜噜精品国产亚洲综合 | 中文字幕国产精品 | 一二三区在线播放 | 欧美激情另类 | 77777av| www国产精品视频 | 亚洲无人区码一码二码三码的含义 | 亚洲自拍小视频 | 91老女人 | 国产另类专区 | 欧美男女激情 | 每日更新在线观看av | 国产又大又黄又粗 | 高潮无码精品色欲av午夜福利 | 好男人影视www | 日韩av线观看 | 成人在线免费 | 亚洲少妇一区 | 在线免费观看欧美大片 | av在线播放国产 | 神马久久午夜 | 18禁肉肉无遮挡无码网站 | 日韩熟妇一区二区三区 | 久久久免费看 | 在线免费看av的网站 | 亲子乱子伦xxxx | 国产成人福利视频 | 精品国产乱码久久久久久郑州公司 | 欧美日韩在线视频免费播放 | 国产色在线视频 | 亚洲精品精品 | 国产黑丝一区二区 | 黄色复仇草 | 性一交一乱一伧老太 | 中文字幕一区二区三区人妻不卡 | 韩国成人免费视频 | 亚洲成人一区二区在线观看 | 精品一区二区三区视频 | 右手影院亚洲欧美 | 人人舔人人干 | 91偷拍富婆spa盗摄在线 | 中文字幕一区二区三区四区免费看 | 欧美人与按摩师xxxx | 中文字幕日本一区二区 | 韩国理论午夜 | 国产裸体网站 | 欧美日韩高清在线观看 | 欧美日韩免费一区 | 麻豆网站入口 | 欧洲亚洲另类 | 国产精品一区二区三区线羞羞网站 | 国产乱码精品一区二区三区五月婷 | 丁香花在线影院观看在线播放 | 国产精品一二三区 | 中文字幕在线观看视频一区二区 | 男男车车的车车网站w98免费 | 一级黄色录像免费观看 | 夜夜夜操| 国产午夜电影在线观看 | 国产精品久久久精品三级 | 国产不卡在线视频 | 精品视频不卡 | 国产精品久免费的黄网站 | 善良的老师伦理bd中字 | 国产高清久久 | 国产良妇出轨视频在线观看 | 波多野结衣 一区 | www.av免费| 99日精品 | 久久久久久久精 | 成人国产精品久久 | ,国产精品国产三级国产 | 国产女教师一区二区三区 | 原来神马电影免费高清完整版动漫 | 毛片视频免费 | 亚洲国产精品欧美久久 | 欧美成人综合 |