java 反射與泛型_Java基礎系列 - 泛型和反射機制

package com.test5;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

/**

* Java泛型和反射機制(泛型的好處 代碼安全簡單,自動裝箱拆箱,提高代碼的重用率)

*/

public class test5 {

public static void main(String[] args) {

Employer employer = new Employer(1000, "張三", 25);

Ref ref1 = new Ref(employer);

System.out.println("---------------------打印類信息-----------------------");

ref1.printClassMethodMessage();

System.out.println("---------------------打印類成員變量信息-----------------------");

ref1.printFieldMessage();

/* 打印顯示

---------------------打印類信息-----------------------

類的名稱是:com.test5.Employer

java.lang.String toString()

java.lang.String getName()

void setName(java.lang.String,)

int getEid()

int getAge()

void setAge(int,)

void setEid(int,)

void wait(long,)

void wait(long,long,int,)

void wait()

boolean equals(java.lang.Object,)

int hashCode()

java.lang.Class getClass()

void notify()

void notifyAll()

---------------------打印類成員變量信息-----------------------

int eid

java.lang.String name

int age

*/

}

}

/**

* 泛型類

* @param

*/

class Ref {

private T o;

//構造函數

public Ref(T o) {

this.o = o;

}

/**

* 打印類的信息,包括類的成員函數,成員變量

*/

public void printClassMethodMessage() {

//要獲取類的信息,首先要獲取類的類類型

Class c = o.getClass();//傳遞的是哪個子類的對象,c 就是子類的類類型

//獲取類的名稱

System.out.println("類的名稱是:" + c.getName());

/**

* Method類,方法對象

* 一個成員方法就是一個Method對象

* getMethods()方法獲取的是所有的public的函數,包括父類繼承而來的

* getDeclaredMethods()方法獲取的是所有該類自己聲明的方法,不問訪問權限

*/

Method[] methods = c.getMethods();//c.getDeclaredMethods()

for (int i = 0; i < methods.length; i++) {

//得到方法的返回值類型的類類型

Class returnType = methods[i].getReturnType();

System.out.print(returnType.getName() + " ");

//打印方法名字

System.out.print(methods[i].getName() + "(");

Class>[] parameterTypes = methods[i].getParameterTypes();

String para = "";

for (Class class1 : parameterTypes) {

para += class1.getName() + ",";

System.out.print(para);

}

System.out.println(")");

}

}

/**

* 獲取成員變量的信息

*/

public void printFieldMessage() {

Class c = o.getClass();

/**

* 成員變量也是對象

* java.lang.reflect.Field

* getFields()方法獲取的是所有的public 的成員變量的信息

* getDeclaredFields 獲取的是該類自己聲明的成員變量的信息

*/

// Field[] fs = c.getFields();

Field[] fs = c.getDeclaredFields();

for (Field field : fs) {

//得到成員變量的類型的類類型

Class fieldType = field.getType();

String typeName = fieldType.getName();

//得到成員變量的名稱

String fieldName = field.getName();

System.out.println(typeName + " " + fieldName);

}

}

}

class Employer {

public Employer(int eid, String name, int age) {

this.eid = eid;

this.name = name;

this.age = age;

}

private int eid;

private String name;

private int age;

public int getEid() {

return eid;

}

public void setEid(int eid) {

this.eid = eid;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Employer{" +

"eid=" + eid +

", name='" + name + '\'' +

", age=" + age +

'}';

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258137.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258137.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258137.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux環境下的Popush部署——張凱

完成情況&#xff1a; 已按照相關部署文檔完成了所有任務&#xff0c;包括軟件包的安裝與配置&#xff0c;以及對各種開發語言的支持&#xff0c;以及gdb的調試功能的支持 遇到的主要問題&#xff1a; 由于從大二以來我基本上所有的開發工作都是在Linux下做的&#xff0c;因此對…

【c++】標準模板庫STL入門簡介與常見用法

一、STL簡介 1、什么是STL STL&#xff08;Standard Template Library&#xff09;標準模板庫&#xff0c;主要由容器、迭代器、算法、函數對象、內存分配器和適配器六大部分組成。STL已是標準C的一部分&#xff0c;使用STL開發系統可以提高開發效率。 2、容器&#xff08;Cont…

強連通分量(學習心得)

定義&#xff1a;有向圖強連通分量&#xff1a;在有向圖G中&#xff0c;如果兩個頂點vi,vj間&#xff08;vi>vj&#xff09;有一條從vi到vj的有向路徑&#xff0c;同時還有一條從vj到vi的有向路徑&#xff0c;則稱兩個頂點強連通如果有向圖G的每兩個頂點都強連通&#xff0c…

java for的增強_Java基礎之增強for循環

平時大家for循環應該用的不少&#xff0c;特別是增強for循環&#xff0c;簡單快捷。但是在增強for中做刪除操作&#xff0c;卻會拋出java.util.ConcurrentModificationException&#xff0c;一起來看下。上面的代碼&#xff0c;在for循環執行完if中的remove&#xff0c;遍歷下一…

window.history 和 DWZ 框架

DWZ框架的ajax請求返回的一般都是一個HTML片段&#xff0c;整個頁面是由一個個HTML片段組成的&#xff0c;可以由TAB切換其內容&#xff0c;但是只有一個body和HEAD&#xff0c;一般head 和 菜單欄是不會動的。 今天遇到一個問題&#xff0c;當一個點擊進入一個tab頁面時&#…

大道至簡(第六章)讀后感

大道至簡&#xff08;第六章&#xff09;讀后感 還是不樂意去讀&#xff0c;但總算可以耐心的讀下去了&#xff0c;這也許也算是讀大道至簡以來的收獲之一吧。第六章的題目是從編程到工程&#xff0c;看到工程二字&#xff0c;讓我不由想起了前幾天和高中同學聊天。他報的燕大土…

遏止個人信息泄露亟待立法跟進

據報道&#xff0c;近日全國30個省份275位艾滋病感染者稱接到了詐騙電話&#xff0c;艾滋病感染者的個人信息疑似被大面積泄露。無獨有偶&#xff0c;近日票務網站大麥網因賬號信息被竊取&#xff0c;間接導致全國多地用戶受騙。目前至少有17名受害者&#xff0c;被騙至少54萬元…

確認類是否可以在運行期使用

問題: 你正在使用最新版的 SDK 中的一些類,但是你不確定這些類是否能在你程序運行的設 備中可用,因為有可能你部署的目標設備要比最新版 SDK 早。 方案: 用NSClassFromString函數. 傳入類的名稱字符串符。若是返回值為空(nil),則表示這個類無法在這臺設備上使用;反之,這個類則…

最新hosts,更新hosts,可用

點擊這里&#xff0c;全選后復制&#xff0c;粘貼到C:\Windows\System32\drivers\etc的hosts里面&#xff0c;把原來的置換了轉載于:https://www.cnblogs.com/zzw1994/p/4940924.html

酒店業解決方案

思科業務就緒酒店解決方案&#xff0c;為酒店的經營和管理提供一個高效率、高盈利、且可不斷發展和改進的平臺&#xff0c;幫您重建酒店競爭優勢&#xff0c;為酒店帶來意想不到的轉變&#xff01; 思科酒店行業解決方案更加融合的思科網絡在改善酒店的運營和員工生產率&#x…

配置SQL Server 2012 AlwaysOn ——step1 建立AD域及DNS配置

需要三臺安裝好windows server 2008 R2 sp1的虛擬機服務器SQLTESTDNS&#xff0c;SQLTESTMAIN,SQLTESTSUB&#xff0c;以SQLTESTMAIN為主數據庫及群集服務器&#xff0c;SQLTESTDNS為DNS及域服務器 1.在SQLTESTDNS的服務器管理器內設置靜態IP地址192.168.10.1,DNS為127.0.0.1&a…

lintcode:遞歸打印數字

題目 用遞歸打印數字 用遞歸的方法找到從1到最大的N位整數。 樣例 給出 N 1, 返回[1,2,3,4,5,6,7,8,9]. 給出 N 2, 返回[1,2,3,4,5,6,7,8,9,10,11,...,99]. 注意 用下面這種方式去遞歸其實很容易&#xff1a; recursion(i) {if i > largest number:returnresults.add(i)r…

做免費的EDM,EmailCar看中的是挖掘數據的價值

從2008年開始&#xff0c;做了9年企業級EDM&#xff08;電子郵件營銷&#xff09;服務的陸霏近日宣布&#xff0c;他們的產品EmailCar從4.0版本開始永久免費為企業提供電子郵件基礎投遞業務。 我們電子郵箱經常收到的推廣郵件就屬于EDM&#xff0c;即Email Direct Marketing。這…

java 讀取split_Java報錯系列——split

在String中,split方法如下&#xff1a;可見&#xff0c;split的核心在于Pattern.compile(regex).split(this, limit);Java提供Pattern,Matcher用于支持正則&#xff0c;可以看一個例子&#xff1a;運行結果是&#xff1a;0,1||3,4|ab|7,8|cef|8,9||11,12|kk|13,14|a|需要注意的…

VS2012生成事件

Visual Studio 事件生成功能對我們開發綜合項目的過程中尤為重要。 下面以VS2012為例&#xff1a; 選擇工程-> 屬性->編譯->生成事件 包括兩個生成事件&#xff1a;預先生成事件和后期生成事件 直接在相應的文本框里編寫寫腳本即可&#xff0c;如&#xff1a;編譯完成…

H3C Navigate 2017 | 拉近世界的距離 新華三的泛聯接版圖

就今天而言&#xff0c;聯接世界的網絡外延已經無限擴大&#xff0c;聯接的方式也越來越復雜。從互聯網時代的PC互聯&#xff0c;演進到移動互聯網時代手機等移動終端的互聯&#xff0c;而即將大規模爆發的物聯網應用時代&#xff0c;所有的事物都可能被連入網絡&#xff0c;一…

java gc log調優_Java 開啟 gc 日志

構建一個 jar 包程序使用 Spring Boot 構建一個簡單的 web 程序&#xff0c;可以直接使用 java -jar 來啟動。RestControllerRequestMapping("/root")SpringBootApplicationpublic class SbDemoApplication {public static void main(String[] args) {SpringApplicat…

大數據時代的公共安全治理

未來&#xff0c;大數據將成為社會基礎設施的一部分&#xff0c;跟公路、自來水、電一樣&#xff0c;成為人們生活不可或缺的一部分。但大數據的作用并不僅僅局限于為普通消費者提供生活必須服務&#xff0c;它已經開始在信息產業、公共安全、交通運輸、金融、水利等領域中發揮…

CCNA第二講筆記

網絡定義&#xff1a;一組由介質&#xff08;線纜&#xff09;互聯的網絡設備&#xff08;路由器、交換機&#xff09;和終端系統&#xff08;PC&#xff09;&#xff1b; 工作組&#xff1a;局域網范疇&#xff0c;范圍最小的局域網&#xff0c;且不涉及網絡設備。臺式機需要有…

晶科電力打造山東省最大物流港分布式光伏項目

近日&#xff0c;晶科電力有限公司宣布&#xff0c;由該公司投建的山東省最大物流港分布式光伏項目已破土動工&#xff0c;成為山東省又一標志性光伏項目。 該項目裝機量為6兆瓦&#xff0c;占用物流港廠房屋頂面積約68330平方米&#xff0c;平均每年發電量約601.22萬kWh&#…