1. 程式人生 > >java反射機制運用到BaseDao等通用基類

java反射機制運用到BaseDao等通用基類

反射中主要應用的方法:

1.獲取類的Class物件

 推薦使用: 第一種。通過Class.forName獲取Class物件.
 
 //方式1:通過Class.forName獲取Class物件.
Class clazz1 = Class.forName("cn.itcast.reflect.Person");
//System.out.println("clazz1:"+clazz1.getSimpleName());

//方式2:可以通過類名獲取Class物件。
Class clazz2 = Person.class;
System.out.println("是同一個物件嗎?"+(clazz1==clazz2));

//方式3: 可以通過物件獲取Class物件
clazz.newInstance()//獲取物件

2.獲取類中所有的方法
Method[] methods =  clazz.getMethods();  // 獲取所有公共 的方法,包括繼承下來的方法。
Method[] methods = clazz.getDeclaredMethods(); //獲取所有的方法,包括私有的,但是不包括繼承下來的方法。 
for(Method m : methods){
System.out.println(m);
}
Person p =  new Person("狗娃",12);
//獲取單個方法
Method m = clazz.getMethod("eat", int.class,String[].class) ; //第一個引數是方法名, 第二引數是形參列表的資料型別。
//執行一個方法
Person p =  new Person("狗娃",12);
m.invoke(p, 3,new String[]{"aa","bb"}); //第一個引數:方法的呼叫者物件, 第二引數: 方法執行所需要的引數。
Method m = clazz.getMethod("sleep", int.class);//獲取其中名為sleep的方法
m.invoke(null, 23);//呼叫sleep方法

這裡書寫關於反射應用的通用基類:(同時一樣可以運用於通用工具類)

private Class<T> clazz;

public BaseDaoImpl(){
//獲取當前執行類泛型父類型別,即為引數化型別,有所有型別公用的高階介面Type接收!
Type type = this.getClass().getGenericSuperclass();
//強轉為引數化型別
ParameterizedType param = (ParameterizedType)type;//BaseDao<Department>
Type[] types = param.getActualTypeArguments();//獲取BaseDao中的泛型,因為可能有多個所以為陣列
clazz = (Class<T>) types[0];//取第一個泛型,即Department賦給clazz
}

通過建立BaseDaoImpl物件類之後,通過構造方法會將泛型中呼叫的物件的Class物件封裝到定義好的clazz中,

接下來就可以在下面的方法書寫時呼叫這個類。

相關推薦

java反射機制運用BaseDao通用

反射中主要應用的方法: 1.獲取類的Class物件  推薦使用: 第一種。通過Class.forName獲取Class物件.    //方式1:通過Class.forName獲取Class物件.Class clazz1 = Class.forName("cn.itcast.

利用java反射完成對比日誌功能——通用實體

一 需求 通用實體類欄位的對比來生成日誌 /** * 物件編輯:生成欄位差異資訊 * @param oldObj 編輯前物件 * @param newObj 編輯後物件 * @param objMap 編輯物件所有欄位 * @param un

利用java反射機制 讀取配置檔案 實現動態載入以及動態型別轉換

作者:54dabang 在spring的學習過程之中,我們可以看出通過配置檔案來動態管理bean物件的好處(鬆耦合 可以讓零散部分組成一個整體,而這些整體並不在意之間彼此的細節,從而達到了真正的物理上的疏散耦合,而非邏輯,有了IOC之後,我們可以讓SPRING充當各框架

Java反射機制,通過物件訪問呼叫的私有成員屬性或者方法

Java反射機制原理 Java中萬物皆物件,類class也是物件,是一個名為Class的類的物件。 所以就可以通過這個Class類型別的物件class,用物件訪問類的屬性和方法。 Class是對類的抽象(每個類對應一份位元組碼)。一般情況下,比如A a

(小工具)Java反射機制實現任意物件集合按指定任意欄位進行分組通用程式實踐

在應用開發的時候,我們有時候會遇到需要對一個給定集合進行分組的情況。如果該集合的資料記錄是從資料庫的獲取,通常我們最簡單的方案是直接在sql層面select後group by完成。 但是,假如某些場景下該資料不是從資料庫獲取呢?那就需要在應用程式層面進行分

(小工具)Java反射機制實現任意物件集合排序並且獲取排列名次的通用程式實踐

在應用開發的時候,我們有時候會遇到需要對一個給定集合進行排序的情況。如果該集合的資料記錄是從資料庫的獲取,通常我們最簡單的方案是直接在sql層面select後order by完成。 但是,假如某些場景下該資料不是從資料庫獲取呢?那就需要在應用程式層面進行排

java反射機制

else ++ 類型 應該 動態 error param 字母 什麽 最近在做一個項目。 需求是這樣的,前端傳一個參數param表示要從服務器獲取的參數,後端需要把對應的參數從服務器中取出來。 本來覺得沒什麽,應該蠻簡單。結果一看表,嗯,40多個參數,如果用if...els

Java反射機制深入詳解

const 運行時 設計 應用程序 類加載器 分配 import 程序 為什麽 一.概念   反射就是把Java的各種成分映射成相應的Java類。   Class類的構造方法是private,由JVM創建。   反射是java語言的一個特性,它允程序在運行時(註意不是編譯的

利用JAVA反射機制實現調用私有方法

parse try ble cat 權限 利用 enabled tde mod 1.fragment是AccessibilityFragment的對象。須要被調用的方法的類。 setAccessible(true)並非將方法的訪問權限改成了public。而是取

Java反射機制詳解一

java 反射 反射機制 工廠模式 1反射機制是什麽反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。在面向對象的世界裏,萬事萬物皆對象.在ja

java 反射機制 觀點

pan sse clipboard star -s cin clip att repl 反射,當時經常聽他們說,自己也看過一些資料,也可能在設計模式中使用過,但是感覺對它沒有一個較深入的了解,這次重新學習了一下,感覺還行吧! 一,先看一下反

候捷談Java反射機制

將在 內省 編程 pub pop 批處理 cdecl 清理 void 2013-06-12 22:51 1690人閱讀 評論(0) 收藏 舉報 分類: JAVA(51) 傳送門:http://blog.csdn.net/njchenyi/article

Java反射機制詳解

ride length 數組大小 conf array arraycopy 動態調用 ray info Java反射機制詳解 |目錄 1反射機制是什麽 2反射機制能做什麽 3反射機制的相關API ·通過一個對象獲得完整的包名和類名 ·實例化Class類對象 ·獲

java 反射機制

選擇 count 語言 用戶 方案 獲取 接口 功能 .cn 一、java反射機制是什麽?   JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為j

Java反射機制demo(五)—獲得並調用一個中的方法

color 擁有 oca logs over super getmethod equals() bool 這個demo在使用反射機制操作屬性之前,主要原因是因為在.class文件字節碼中,方法排在屬性的前面。 1,獲得一個類中的方法 先看一下方法和運行結果。獲取所有的方

java反射機制學習:初始反射機制

pro sta 加載 初始 完整 tac demo 獲得 sys   本人小白一枚,想和大家一起分享我學習java的筆記和心得。 反射機制: 指的是可以於運行時加載、探知、使用編譯期間完全未知的類。 程序在運行狀態中,可以動態加載一個只有名稱的類,對於任意一個已加載的

javajava反射機制,動態獲取對象的屬性和對應的參數值,並屬性按照字典序排序,Field.setAccessible()方法的說明【可用於微信支付 簽名生成】

modifier 直接 this 字段值 1-1 讓我 toupper ima play 方法1:通過get()方法獲取屬性值 package com.sxd.test.controller; public class FirstCa{ private

java反射機制淺析

成員變量 java語言 運行時 淺析 表示 運行 如何 信息 動態獲取 Java反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為Java語言的反射

java反射機制實現攔截器

tor 攔截 stat 重要 obj static interface 程序 bject 實現一個攔截器必須要實現一下幾個類: 1 目標類接口:目標類要實現的接口。 package com.lanvis.reflect; public interface ITarge

Java反射機制能夠獲取的信息,與應用

rri 代理 pan [] reflect 語言 子類 list tro 一、什麽是Java反射機制? 【1】反射機制是在運行狀態中,對於任何一個類,都能夠知道這個類的所有屬性和方法; 【2】對於任意一個對象,都能夠調用它的任意一個屬性和方法; 像這種動態獲取類的信