導航:首頁 > 編程語言 > java反射set方法

java反射set方法

發布時間:2022-05-12 14:25:22

java中反射的三種方法是

第一種:通過forName()方法;

第二種:類.class;

第三種:對象.getClass()。

舉例如下:

package
test;

public class Demo{

public static void
main(){

Class<?> c1 = null;

Class<?> c2 =
null;

Class<?> c3 =
null;

//三種反射用實例化方式

try{

//最常用的一種形式

c1 =
Class.forName("test.X");

}catch(ClassNotFoundException
e){

e.printStackTrace();

}

//通過Object類中的方法實例化

c2
= new X().getClass();

//通過類.class實例化

c3 =
X.class;

System.out.println("類名:" + c1.getName());
//得到類名

System.out.println("類名:" + c2.getName());
//得到類名

System.out.println("類名:" + c3.getName());
//得到類名

}

}

㈡ Java如何獲得一個對象中所有帶set方法的欄位(形成Field對象)包括父類的。有現成的工具類

在Java中 是獲取不了對象裡面的欄位的(除非是一些固定寫死的欄位) ,但是可以利用反射獲取set方法,進行賦值
具體可以參考一下代碼
/**
*
* @param obj 賦值對象
* @param value 賦值的值
* @throws Exception
*/
public void setMethod(Object obj ,String value) throws Exception{
if (obj == null ) {
return;
}
Method[] methods = obj.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
String name = method.getName();
if(name.contains("set")){
method.invoke(obj,value);
}
}

}

㈢ Java反射機制獲取set()方法 並且為set()方法傳值

Class.getDeclaredMethod()
是獲取這個類中所有的方法,返回的是Method[]
如果有參數,第1個是方法名稱,第2個是該方法的所有參數數組,這樣返回的是Method這個對象
Method.invoke()
傳入調用方法的類,另一個是調用這個方法所需要的參數,如果該方法沒有參數,可以不填寫,在JDK1,4之前,第2個參數是傳入一個數組的,但是在jdk1.5之後,可以不傳數組,多個參數用逗號隔開

不知道你聽明白沒

㈣ Java裡面,反射父類裡面數字類型欄位,怎麼set值

你在invoke反射方法時。這個你要調用父類的構造方法或者set方法來賦值。就可以的。

㈤ JAVA中反射是什麼

JAVA中反射是動態獲取信息以及動態調用對象方法的一種反射機制。

Java反射就是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;並且能改變它的屬性。而這也是Java被視為動態語言的一個關鍵性質。

Java反射的功能是在運行時判斷任意一個對象所屬的類,在運行時構造任意一個類的對象,在運行時判斷任意一個類所具有的成員變數和方法,在運行時調用任意一個對象的方法,生成動態代理。

(5)java反射set方法擴展閱讀:

JAVA中反射實例:

1、Class superClass=clazz.getSuperclass();//獲取父類。

System.out.println("getSuperclass:"+superClass)。

2、Class[] interfaces=clazz.getInterfaces();//獲取實現介面。

System.out.println("getInterfaces:"+interfaces.length)。

3、Constructor[] cons=clazz.getConstructors();//構造方法。

System.out.println("getConstructors:"+cons.length)。

參考資料來源:網路: JAVA反射機制

㈥ java反射調用屬性的set方法時,若屬性為int類型,會出錯,設置通過get得到的值的getClass為Integer。

Integer可以直接轉成int的啊,int是基本類型,去不是繼承於object,而integer是類才能用getclass方法。獲得之後能夠轉成int型

㈦ Java反射賦值會調用set方法嗎

不會。set/get方法只是javaBean的規范,用來統一管理Bean屬性的賦值操作。

㈧ java反射機制詳解

反射就是把Java的各種成分映射成相應的Java類。
Class類的構造方法是private,由JVM創建。
反射是java語言的一個特性,它允程序在運行時(注意不是編譯的時候)來進行自我檢查並且對內部的成員進行操作。例如它允許一個java的類獲取他所有的成員變數和方法並且顯示出來。Java 的這一能力在實際應用中也許用得不是很多,但是在其它的程序設計語言中根本就不存在這一特性。例如,Pascal、C 或者 C++ 中就沒有辦法在程序中獲得函數定義相關的信息。(來自Sun)
JavaBean 是 reflection 的實際應用之一,它能讓一些工具可視化的操作軟體組件。這些工具通過 reflection 動態的載入並取得 Java 組件(類) 的屬性。
反射是從1.2就有的,後面的三大框架都會用到反射機制,涉及到類"Class",無法直接new CLass(),其對象是內存里的一份位元組碼.
Class 類的實例表示正在運行的 Java 應用程序中的類和介面。枚舉是一種類,注釋是一種介面。每個數組屬於被映射為 Class 對象的一個類,所有具有相同元素類型和維數的數組都共享該 Class 對象。
基本的 Java類型(boolean、byte、char、short、int、long、float 和 double)和關鍵字 void 也表示為 Class 對象。Class 沒有公共構造方法。
Class 對象是在載入類時由 Java 虛擬機以及通過調用類載入器中的 defineClass 方法自動構造的。
Person p1 = new Person();
//下面的這三種方式都可以得到位元組碼
CLass c1 = Date.class();
p1.getClass();
//若存在則載入,否則新建,往往使用第三種,類的名字在寫源程序時不需要知道,到運行時再傳遞過來
Class.forName("java.lang.String");

Class.forName()位元組碼已經載入到java虛擬機中,去得到位元組碼;java虛擬機中還沒有生成位元組碼 用類載入器進行載入,載入的位元組碼緩沖到虛擬機中。
另外,大家可以關注微信公眾號Java技術棧回復:JVM,獲取我整理的系列JVM教程,都是干貨。
考慮下面這個簡單的例子,讓我們看看 reflection 是如何工作的。
import java.lang.reflect.*;

public class DumpMethods {
public static void main(String args[]) {
try {
Class c = Class.forName("java.util.Stack");

Method m[] = c.getDeclaredMethods();

for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
}
catch (Throwable e){
System.err.println(e);
}
}
}

public synchronized java.lang.Object java.util.Stack.pop()
public java.lang.Object java.util.Stack.push(java.lang.Object)
public boolean java.util.Stack.empty()
public synchronized java.lang.Object java.util.Stack.peek()
public synchronized int java.util.Stack.search(java.lang.Object)

這樣就列出了java.util.Stack 類的各方法名以及它們的限制符和返回類型。這個程序使用 Class.forName 載入指定的類,然後調用 getDeclaredMethods 來獲取這個類中定義了的方法列表。java.lang.reflect.Methods 是用來描述某個類中單個方法的一個類。
以下示例使用 Class 對象來顯示對象的類名:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}

還可以使用一個類字面值(JLS Section 15.8.2)來獲取指定類型(或 void)的 Class 對象。例如:
System.out.println("The name of class Foo is: "+Foo.class.getName());

在沒有對象實例的時候,主要有兩種辦法。
//獲得類類型的兩種方式
Class cls1 = Role.class;
Class cls2 = Class.forName("yui.Role");

注意第二種方式中,forName中的參數一定是完整的類名(包名+類名),並且這個方法需要捕獲異常。現在得到cls1就可以創建一個Role類的實例了,利用Class的newInstance方法相當於調用類的默認的構造器。
Object o = cls1.newInstance();
//創建一個實例
//Object o1 = new Role(); //與上面的方法等價

㈨ java:為什麼要使用反射技術直接用get,set方法不行嗎

舉個簡單的例子吧,你有一套系統,根據不同版本連接多重不同的資料庫,通過反射的方式,你可以通過傳遞一個字元串的方式來調用某個資料庫連接類的方法。如果用set,get方法的話,每新增加一個資料庫,就需要新增加一個方法,也就是說需要修改原有的已經寫好的類。而使用反射,直接創建一個新的類,然後直接調用就可以了,無需修改任何原有的類。當然這個例子舉的很菜鳥,希望你能理解。

閱讀全文

與java反射set方法相關的資料

熱點內容
手機號碼如何加密 瀏覽:424
沈陽程序員培訓學校 瀏覽:538
一般伺服器如何配置 瀏覽:895
圖片怎樣加密發郵件 瀏覽:619
萬虹電腦文件夾密碼忘記了怎麼辦 瀏覽:631
rc108單片機 瀏覽:867
戰雷如何改變伺服器 瀏覽:674
mactelnet命令 瀏覽:51
壓縮袋壓縮了拿出來 瀏覽:401
安卓手機相機怎麼設置許可權 瀏覽:121
美女程序員轉行做主播 瀏覽:671
辦理解壓房產 瀏覽:575
道路工程概論pdf 瀏覽:388
超棒數學速演算法大全 瀏覽:937
小米易語言登錄源碼 瀏覽:31
磚牆內加密鋼筋 瀏覽:992
鄉關何處pdf 瀏覽:84
小豬領贊小程序源碼 瀏覽:336
python曲線如何原路返回 瀏覽:430
pdf快速看圖破解版 瀏覽:294