基本反射了解

 1 package cn.wh;
 2 /**
 3  * java.lang.Class
 4  * @author 王恒
 5  * @time 2016年11月2日 上午10:39:25
 6  */
 7 public class RedlectTest {
 8     public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
 9         Cat cat=new Cat();System.out.println("--------------------------");
10         
11         Class c1=Class.forName("cn.wh.Cat");
12         Class c2=Cat.class;
13         Class c3=cat.getClass();
14         
15         System.out.println(c1.getName());
16         System.out.println(c1.getSimpleName());
17         //返回一個包含某些 Class 對象的數組,這些對象表示屬于此 Class 對象所表示的類的成員的所有公共類和接口。
18         System.out.println(c1.getClasses());
19         System.out.println(c1.getPackage());
20         System.out.println(c1.getModifiers());
21         System.out.println(c1.getInterfaces());
22         System.out.println("接口數量 "+c1.getInterfaces().length);
23         System.out.println(c1.getSuperclass().getName());
24         System.out.println("實例化  "+c1.newInstance());
25     }
26 }
RedlectTest
 1 package cn.constructor;
 2 
 3 import java.lang.reflect.Constructor;
 4 import java.lang.reflect.InvocationTargetException;
 5 
 6 public class TestConstructor {
 7 
 8     public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
 9         Class claxx=Class.forName("cn.wh.Cat");
10         //查看有幾個構造方法
11         Constructor[] cs=claxx.getConstructors();
12         System.out.println("有public幾個構造方法   "+cs.length);
13         Constructor[] cs2=claxx.getDeclaredConstructors();
14         System.out.println("總共有幾個構造方法   "+cs2.length);
15         //暴力反射,即沒有public修飾的構造方法,使其能夠創建構造方法
16         //c.setAccessible(true);
17         //一個參數
18         Constructor c=claxx.getDeclaredConstructor(String.class);
19         System.out.println(c.getName()+"---"+c.getModifiers());
20         //兩個參數
21         Constructor c2=claxx.getDeclaredConstructor(String.class,String.class);
22         System.out.println(c.getName()+"---"+c.getModifiers());
23         //實例化
24         Object obj=c.newInstance("");
25         System.out.println(obj+"---"+obj.getClass().getSimpleName());
26         //Class<?>... parameterTypes  表示任意類型的可變參數
27     }
28 }
TestConstructor
 1 package cn.Field;
 2 
 3 import java.lang.reflect.Field;
 4 
 5 import cn.wh.Cat;
 6 
 7 public class TestField {
 8 
 9     public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException {
10         Class claxx=Class.forName("cn.wh.Cat");
11         Cat cat=(Cat) claxx.newInstance();
12         System.out.println("---------------------");
13         //獲取聲明字段數組
14         Field[] fs=claxx.getDeclaredFields();
15         System.out.println("數組長度為   "+fs.length);
16         
17         for(Field f:fs){ 
18             f.setAccessible(true);
19             System.out.println(f.getName()+"--"+f.getModifiers()+"---"+f.get(cat));
20         }
21         
22         //獲取單個聲明字段
23         System.out.println("---------------------獲取單個聲明字段");
24         Field f2=claxx.getDeclaredField("master");
25         f2.setAccessible(true);
26         System.out.println(f2.getName()+"--"+f2.getModifiers()+"---"+f2.get(cat));
27         System.out.println(f2.getName()+"--"+f2.getModifiers()+"---"+f2.get(null));
28         //若聲明的字段是static 類型,則可以為f2.get(null),否則一律加對象
29     }
30 }
TestField
 1 package cn.wh;
 2 
 3 public class Cat extends Animal{//,Maoke{
 4     //protected int age=50;
 5     protected String age="我的年齡50";
 6     public static String master="周老師";
 7     
 8     public Cat(){
 9         System.out.println("Cat.Cat(111)");
10     }
11     public Cat(String age,String sname){
12          
13     }
14     
15     Cat(String master,String sname,String age1){
16         
17     };
18     
19     public Cat(String sname){
20         //super(); 寫與不寫 都存在!  如果寫super()必須放在第一行
21         super(sname);
22         this.sname=sname;
23         //super.eat();
24         //System.out.println("Cat.Cat(222)"+super.age);
25         //System.out.println("Cat.Cat(222)"+age);
26     }
27 //    public float walk(String road){
28 //        System.out.println("Cat.walk()");
29 //        return 60f;
30 //    }
31 //    
32      float walk(){
33         System.out.println("Cat.walk()");
34         m1();
35         return 60f;
36     }
37      
38      
39      public void eat(){
40             System.out.println("Cat.eat(111)");
41         }
42      void m1(){
43          
44      }
45     
46 }
Cat
 1 package cn.wh;
 2 
 3 
 4 
 5 public  class Animal {
 6     
 7     protected  String  sname="";
 8     protected  int age=80;
 9     public static String master="楊老師";
10     public Animal(){
11         //System.out.println("Animal.Animal(111)");
12         sname="";
13     }
14     
15     public Animal(String sname){
16         //System.out.println("Animal.Animal(222)");
17     }
18     
19     public  void eat(){
20         System.out.println("Animal.eat(111)");
21     }
22     
23     public void eat(String foodName){
24         System.out.println("Animal.eat(222)"+foodName);
25     }
26     
27      String  eat(String foodName,int num){
28         System.out.println("Animal.eat(333)"+foodName);
29         return "好";
30     }
31     
32     
33     public void sleep(){
34         
35     }
36      float walk(){
37         System.out.println("Animal.walk()");
38         return 30.5f;
39     }
40     
41     
42     
43 }
Animal
 1 package cn.method;
 2 
 3 import java.lang.reflect.InvocationTargetException;
 4 
 5 import java.lang.reflect.Method;
 6 
 7 import cn.wh.Cat;
 8 
 9 public class TestMethod {
10     
11     public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
12         Cat cat=new Cat();
13         
14         Class claxx=Class.forName("cn.wh.Cat");
15         //獲取所有方法         包括實例方法,即對象方法    類名.getInstanll();
16         Method[] ms=claxx.getDeclaredMethods();
17         for(Method m:ms){
18             System.out.println(m.getModifiers()+"--"+m.getName()+"--"+m.getParameterCount()+"--"+m.getReturnType());
19         }
20         
21         Method me=claxx.getDeclaredMethod("walk",String.class);
22         me.setAccessible(true);
23         me.invoke(cat,"貓");
24         
25         Method me2=claxx.getDeclaredMethod("eat");
26         me.setAccessible(true);
27         me2.invoke(cat);
28         
29         claxx.getDeclaredMethod("m1").invoke(null);
30     }
31 }
TestMethod

?

轉載于:https://www.cnblogs.com/1020182600HENG/p/6022589.html

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

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

相關文章

【PhotoScan精品教程】任務四:PhotoScan做空三+CC生成正射、三維建模綜合案例

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho、GodWork) 【PhotoScan精品教程】任務一:新建工程、導入照片、設置坐標系、導入控制點(POS)、自由空三 【PhotoScan精品教程】任務二:刺像控點,平差,質量報告精度檢查,像控點POS權重調配 【…

[轉]讓.NET應用秒變微服務

隨著近年來微服務的發展&#xff0c;許多團隊開始將自己的單體應用改造為微服務。通常Java或Go的應用可以通過業界已有的微服務框架作為微服務開發和改造的底座&#xff0c;封裝掉解決跨網絡問題帶來的復雜性。但以Chassis模式進行的微服務改造有兩大問題&#xff1a;多語言框架…

C語言九十三之輸入一個字符x,找到輸入的那句話(字符串)里面一樣字母的位置。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 輸入一個字…

WPF 使用 MAUI 的自繪制邏輯

這是一個當前還沒開發完成的功能&#xff0c;準確來說連預覽版也算不上的功能。我原本以為 MAUI 是無法在 WPF 上面跑的&#xff0c;然而在看完了 MAUI 整個大的設計&#xff0c;才了解到&#xff0c;原來 MAUI 是一個非常龐大的開發項目。在 MAUI 里面&#xff0c;雖然現在是正…

[轉]redis 5.0.5 5分鐘搭建redis集群

環境&#xff1a;centos 7 1&#xff1a;下載并安裝redis ???????$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz$ tar xzf redis-5.0.5.tar.gz$ cd redis-5.0.5$ make redis 5.0版本 集群搭建不需要我們安裝ruby就可以搭建成功&#xff0c;并且redis…

【土地評價與土地管理】案例:某地區柑橘種植適宜性評價

文章目錄 一、確定評價單元二、評價因子選擇三、評價因子權重的確定四、構建評價分級標準五、綜合評價六、適宜性等級劃分七、得出適宜性評價結果柑橘種植所需的自然條件: 柑橘果樹生長發育、開花結果與溫度、日照、水分(濕度)、土壤以及風、海拔、地形和坡向等環境條件緊密相…

django中怎樣生成非HTML格式的內容。

某些時候可能有這種需求。在網頁中點擊一個鏈接或者一個button希望返回一張圖片、一個pdf文檔、一個csv文檔等而非HTML。在diango中非常easy做到這些。django中的view用來接收http request并返回web response。通常情況下&#xff0c;返回的內容為HTML&#xff0c;但其可以返回…

Window.document對象

一、找到元素&#xff1a; docunment.getElementById("id")&#xff1b;根據id找&#xff0c;最多找一個&#xff1b; var a docunment.getElementById("id");將找到的元素放在變量中&#xff1b; docunment.getElementsByName("name")&am…

C# 讀寫文件從用戶態切到內核態,到底是個什么流程?

一&#xff1a;背景 1. 一個很好奇的問題我們在學習 C# 的過程中&#xff0c;總會聽到一個詞叫做 內核態 &#xff0c;比如說用 C# 讀寫文件&#xff0c;會涉及到代碼從 用戶態 到 內核態 的切換&#xff0c;用 HttpClient 獲取遠端的數據&#xff0c;也會涉及到 用戶態 到 內核…

C語言九十四之請編寫函數fun(char *str, int n),其功能是:使字符串str的前導*號不能多余n個,若多于n個,則刪除多余的*號,若少于或等于n個,則不做處理。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 規定輸入的…

【土地評價與土地管理】案例:某地區土地農業利用潛力評價

文章目錄 一、確定評價單元二、擬定潛力評價系統表、確定指標權重三、指標評價四、評定潛力等級五、得出潛力評價結果一、確定評價單元 土地潛力評價單元采用地塊作為評價單元,此地塊是建立在土地利用現狀的基礎上, 綜合土地的自然屬性來確定,評價單元界線與土地現有界線基本…

WIKIOI 1519 過路費

1519 過路費 1519 過路費 時間限制: 1 s 空間限制: 256000 KB 題目等級 : 大師 Master 題解 題目描述 Description 在某個遙遠的國家里&#xff0c;有 n個城市。編號為 1,2,3,…,n。這個國家的政府修建了m 條雙向道路&#xff0c;每條道路連接著兩個城市。政府規定從城市…

code point,code unit

2019獨角獸企業重金招聘Python工程師標準>>> 從一段API描述談起&#xff1a; 在String的length的API中描述是這樣的&#xff01; lengthpublic int length() Returns the length of this string. The length is equal to the number of 16-bit Unicode characters i…

Android之解決JsonObject里面的JsonArray數據會有斜杠問題

1、問題 本地保存了多個json格式的字符串 {"event":"sdk_ad_request_status","timestamp":1640180549231,"ad_app_id":"10104","pool_test":0,"ad_type":0,"ad_request_time":0,"requ…

【土地評價與土地管理】案例:蘭州市榆中縣農用地分等

文章目錄 一、資料收集二、確定標準耕作制度、基準作物、指定作物、光溫(氣候生產潛力)三、劃分指標區,確定分等因素及權重四、編制“指定作物-分等因素-自然質量分”記分規則表五、繪制分等因素分值圖,劃分分等單元六、計算農用地自然質量分七、計算自然質量等指數八、計算…

.NET7之MiniAPI(特別篇) :Preview5優化了JWT驗證(下)

Preview5對策略驗證的方式沒有改變&#xff0c;只不過內置了Token的生成&#xff0c;和《.NET6之MiniAPI(十)&#xff1a;基于策略的身份驗證和授權》的驗證方式基本相同&#xff0c;都是生成和驗證使用的驗證參數要一致&#xff0c;用繼承AuthorizationHandler的子類來作每次請…

業務多變的公司上云后蒸蒸日上

一、云服務器與傳統服務器的對比 1&#xff09;、傳統服務器 傳統服務器是一個獨立的硬件設備,可以理解成是一臺放在機房的高配置電腦,可根據需求安裝各種操作系統以及配置各種環境,性能也比較強大。 2&#xff09;、云服務器 云服務器是構建在硬件服務器集群之上&#xff0c;…

2016福州大學軟件工程第四次團隊作業-系統設計成績匯總

第四次團隊作業——系統設計打分統計結果如下&#xff1a; 學號組別團隊分數貢獻比例個人分數031401433606notconnected141613.83031402606606notconnected141413.33031402618606notconnected141814.34031402629606notconnected141413.33031402631606notconnected141914.590314…

[轉]在C#中像Python一樣編寫TensorFlow機器學習代碼

機器學習是一個令人激動人心的領域&#xff0c;一直有新的技術突破。研究人員不斷推動機器智能的提升&#xff0c;教機器如何聽說讀寫——這些曾經是我們人類專屬的技能。機器學習的首選語言是Python&#xff0c;最受歡迎的庫是Google的TensorFlow。幾乎所有的代碼示例都是用Py…

【土地評價與土地管理】教案 第一章:土地評價要素的選擇

文章目錄 1.1 土地構成要素與其農業利用1、光能條件2、熱量條件3、降水條件1.1 土地構成要素與其農業利用 1、光能條件 ? 光能是綠色植物進行光合作用和生物運動發展的主要能源 ? 太陽輻射、日照時數 ? 太陽輻射量隨地域和季節變化較大,導致了土地利用的多樣性和土地資源…