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

java反射set方法調用

發布時間:2024-10-05 11:43:48

㈠ 說說對java反射的理解,使用反射如何獲取一個類的所有方法,使用反射需要注意哪些問題

反射說白了就是可以獲得一個類的所有信息,主要包括方法和屬性兩部分。
1.獲得方法包括獲得方法的名稱,方法的返回類型,方法的訪問修飾符,以及通過反射執行這個方法。
2.獲得屬性包括屬性的名稱,類型,訪問修飾符,以及這個屬性的值。
這些獲得都有相應的API提供操作。

舉個例子:
先定義一個類,有age這個屬性,以及age的get和set方法:

public class TestRflectionFather {
public int age =32;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

然後操作獲得所有方法:

import java.lang.reflect.Method;
public class Testmain {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("TestRflectionFather");
Method[] methods =clazz.getDeclaredMethods();
for(Method me:methods)
{
System.out.println(me.getName());
}
}

}

//最後輸出
getAge
setAge

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

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

㈢ 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中的反射,invoke方法詳解

就是調用類中的方法,最簡單的用法是可以把方法參數化,invoke(class, method)比如你Test類里有一系列名字相似的方法setValue1、setValue2等等。可以把方法名存進數組v[],然後循環里invoke(test,v[i]),就順序調用了全部setValue

如:publicclass MyTest{publicstaticvoidmain(String[]args) {String[]names={"tom","tim","allen","alice"};

Class<?>clazz=Test.class;try Methodmethod=clazz.getMethod("sayHi",String.class);for(Stringname:names)method.invoke(clazz.newInstance(),name);}catch(NoSuchMethodExceptione)e.printStackTrace();}catch(IllegalAccessExceptie.printStackTrace(}catch(IllegalArgumentException{e.printStackTrace();}catch(InvocationTargetExceptione)e.printStackTrace();}catch(InstantiationExceptione{e.printStackTrace(}classTest{publicvoidsayHi(Stringname){System.out.println("Hi"+name);}

㈤ JAVA從資料庫查出來的數據放到實體類想用反射的方法給他們賦值,怎麼做

說一個大概思路吧:
1.讀取數據:從資料庫中讀取數據的同時,拿到元數據,即metadata;
2.實例化:通過類名,利用反射 實例你的實體類(類名可以和表名保持一致,這樣就不用寫額外的
映射了),如果你只是想通過反射賦值的話,你也可以直接new個類;
3.方法調用:通過元數據,利用反射 得到你的set方法(方法名可以和欄位名保持一致,否則你要寫
出映射關系);

㈥ java中, 怎麼調用別的類的私有方法

利用反射即可調用;
簡易實例代碼如下:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
* @author thomaslwq
* @version 創建時間:Sep 4, 2012 9:53:49 PM
* 類說明
*/
public class ReflectionTest {

public static void setObjectColor(Object obj) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAcces***ception, InvocationTargetException{
Class cls = obj.getClass();
//獲得類的私有方法
Method method = cls.getDeclaredMethod("privateMethod", null);
method.setAccessible(true); //沒有設置就會報錯
//調用該方法
method.invoke(obj, null);
}
public static void main(String args[]) throws SecurityException, IllegalArgumentException, NoSuchMethodException, IllegalAcces***ception, InvocationTargetException{

setObjectColor(new MyTest());
}
}
//測試類
class MyTest{


public void setMyTest(){
System.out.println("setMyTest");
}
/**
類的私有方法
**/
private void privateMethod(){
System.out.println("調用了 private Method");
}

}

㈦ java反射機制可以調用到私有方法,是不是就破壞了JAVA的卦裝性呢。

這是一個很值得探討的問題,許多人接觸反射時,對反射功能之強大都會抱有懷疑,感覺嚴重破壞了封裝的性質。可是,什麼是封裝,什麼是安全呢?
封裝,是將具體的實現細節隱藏,而把功能作為整體提供給類的外部使用,也就是說,公有方法能夠完成類所具有的功能。當別人使用這個類時,如果通過反射直接調用私有方法,可能根本實現不了類的功能,甚至可能會出錯,因此通過反射調用私有方法可以說是沒有任何用處的,開發人員沒有必要故意去破壞封裝好的類。從這點上看,封裝性並沒有被破壞。
所謂安全,如果意思是保護實現源碼不被別人看見,那沒有作用。不用反射也能輕易獲取源碼。
所以我以為反射機制只是提供了一種強大的功能,使得開發者能在封裝之外,按照特定的需要實現一些功能。就好比核技術,雖然造核彈很危險吧,但造核電站還是很有用處的(這個比喻似乎不是很恰當,將就將就)。

曾經給朋友討論過這個問題,感覺解釋得不是很清楚,大家一起探討探討,看看怎樣表述才能更容易理解:)

㈧ 調用一個javabean實例的屬性都有哪些方式

JavaBean 是一種普遍應用的 Java 類型,它定義了一個標準的Java類來承載和封裝數據。可以調用 JavaBean 實例的屬性有以下幾種方式:

閱讀全文

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

熱點內容
aloha防碰撞演算法 瀏覽:312
程序員怎麼學習游戲 瀏覽:223
vue源碼二次開發難嗎 瀏覽:306
安卓導航怎麼使用蘋果carplay 瀏覽:452
androidcdrom 瀏覽:594
腦殘數學計演算法 瀏覽:985
頭像水印源碼psd 瀏覽:156
電話手錶什麼app可以設置號碼 瀏覽:151
單片機存儲器地址容量 瀏覽:620
javahashmap用法 瀏覽:946
大數據挖掘演算法與模型 瀏覽:888
大慶伺服器的dns地址查詢 瀏覽:977
java反射set方法調用 瀏覽:877
java發送郵件jar 瀏覽:486
文件夾隱藏了可以通過地址欄查看 瀏覽:649
歐洲海外市場加密貨幣 瀏覽:973
javalist轉換map 瀏覽:591
androidstudio預覽布局 瀏覽:532
usb文件夾怎麼開 瀏覽:734
究極之月安卓模擬器如何掃描 瀏覽:37