Java的反射機(jī)制---動(dòng)態(tài)調(diào)用對(duì)象的簡(jiǎn)單方法
唉!我還真是在面試中學(xué)習(xí)新東東啊,一個(gè)公司剛剛給了個(gè)測(cè)試,不過(guò)我很奇怪的是為什么web developer的職位居然考java的反射機(jī)制題,不過(guò)學(xué)習(xí)研究一下反射機(jī)制對(duì)我來(lái)說(shuō)是件好事啦!
先說(shuō)說(shuō)什么是java反射機(jī)制吧,在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法;這 種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱(chēng)為java語(yǔ)言的反射機(jī)制。主要功能:在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類(lèi);在運(yùn)行時(shí)構(gòu)造任意一個(gè)類(lèi)的對(duì) 象;在運(yùn)行時(shí)判斷任意一個(gè)類(lèi)所具有的成員變量和方法;在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法;生成動(dòng)態(tài)代理。
然后再留個(gè)示例吧。
package com.beidou.test;
import java.lang.reflect.Method;
public class Dynamic {
public static void main(String[] args) throws Exception{
Class c = Dynamic.class;//得到對(duì)象
Method[] methods = c.getDeclaredMethods();//得到方法
for(Method method : methods){
System.out.print(method.getName());//打印參數(shù)名
Class[] parameterTypes = method.getParameterTypes();
for(int i=0;i<parameterTypes.length;i++){
String nameString=parameterTypes[i].getName();
System.out.print("parameterType:"+nameString);//打印方法參數(shù)類(lèi)型
}
System.out.print("ReturnType:"+method.getReturnType());
System.out.println();
}
Object obj=c.newInstance();//獲取到方法對(duì)象,假設(shè)方法的參數(shù)是一個(gè)int,String,method名為getAge
Method sAge = c.getMethod("getAge", new Class[] {int.class,String.class});
//獲得參數(shù)Object
Object[] arguments = new Object[]{new Integer(23),new String("abc")};
//執(zhí)行方法
String s=(String)sAge.invoke(obj , arguments);
System.out.print(s);
}
public String getAge(int age,String name){
return name+": "+age;
}
}
以上這篇Java的反射機(jī)制---動(dòng)態(tài)調(diào)用對(duì)象的簡(jiǎn)單方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)base64圖片編碼數(shù)據(jù)轉(zhuǎn)換為本地圖片的方法
這篇文章主要介紹了Java實(shí)現(xiàn)base64圖片編碼數(shù)據(jù)轉(zhuǎn)換為本地圖片的方法,涉及java編碼轉(zhuǎn)換及圖片文件生成相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
spring boot 1.5.4 web容器定制(端口號(hào)等修改)方法
下面小編就為大家?guī)?lái)一篇spring boot 1.5.4 web容器定制(端口號(hào)等修改)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
JavaSE程序邏輯控制實(shí)現(xiàn)詳細(xì)圖文教程
JavaSE是為了開(kāi)發(fā)桌面應(yīng)用程序和控制臺(tái)應(yīng)用程序而設(shè)計(jì)的,使用JavaSE可以編寫(xiě)?yīng)毩⑦\(yùn)行的Java應(yīng)用程序,這篇文章主要給大家介紹了關(guān)于JavaSE程序邏輯控制實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-04-04

