唉!我還真是在面試中學習新東東啊,一個公司剛剛給了個測試,不過我很奇怪的是為什么web developer的職位居然考java的反射機制題,不過學習研究一下反射機制對我來說是件好事啦!
先說說什么是java反射機制吧,在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法;這 種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。主要功能:在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對 象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。
然后再留個示例吧。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package com.beidou.test; import java.lang.reflect.Method; public class Dynamic { public static void main(String[] args) throws Exception{ Class c = Dynamic. class ; //得到對象 Method[] methods = c.getDeclaredMethods(); //得到方法 for (Method method : methods){ System.out.print(method.getName()); //打印參數名 Class[] parameterTypes = method.getParameterTypes(); for ( int i= 0 ;i<parameterTypes.length;i++){ String nameString=parameterTypes[i].getName(); System.out.print( "parameterType:" +nameString); //打印方法參數類型 } System.out.print( "ReturnType:" +method.getReturnType()); System.out.println(); } Object obj=c.newInstance(); //獲取到方法對象,假設方法的參數是一個int,String,method名為getAge Method sAge = c.getMethod( "getAge" , new Class[] { int . class ,String. class }); //獲得參數Object Object[] arguments = new Object[]{ new Integer( 23 ), new String( "abc" )}; //執行方法 String s=(String)sAge.invoke(obj , arguments); System.out.print(s); } public String getAge( int age,String name){ return name+ ": " +age; } } |
以上這篇Java的反射機制---動態調用對象的簡單方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。