日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

一个Java反射机制例子

發(fā)布時間:2023/12/15 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个Java反射机制例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?來源:http://blog.csdn.net/loyoveui/archive/2007/06/22/1662154.aspx

?

package test;

import java.lang.reflect.Method;

public class InvokeTest {
? /**
?? *
?? * main 方法
?? * @param args
?? * void
?? */
? public static void main(String[] args) {
??? try {
????? InvokeTest invokeTest = new InvokeTest();
????? //1.第一步獲取方法的映射
????? //String[] realArgs = {"",""};//定義一個與execute方法第1個參數(shù)對應(yīng)的String數(shù)組(注意此數(shù)組只為獲取方法的映射)
????? //Integer in = new Integer(0);//定義一個與execute方法第2個參數(shù)對應(yīng)的Integer對象?????
????? //Class[] c_args = new Class[2];
????? //c_args[0] = realArgs.getClass();//分別獲取以上兩個參數(shù)的class
????? //c_args[1] = in.getClass();
????? //Method method = invokeTest.getClass().getMethod("execute", c_args);//返回值為test方法的映射(類型Method)
????? /**
?????? * 注意,以上幾句(11-16行)可以寫成下面一句
?????? * 目的是獲取execute方法的映射,第一個參數(shù)是方法,第二個參數(shù)是execute方法所需要的參數(shù)列表,類型是class
?????? * 所以當(dāng)execute方法沒有參數(shù)時,getMethod第二個參數(shù)為null即可
?????? */
????? Method method = invokeTest.getClass().getMethod("execute",
????????? new Class[] { String[].class, Integer.class });
?????
????? //2.第二步調(diào)用方法
????? //String[] a1={"zhong","cheng"};//這里的數(shù)組用于做真正調(diào)用時的參數(shù)
????? //Integer a2=new Integer(5);//同上
????? //Object[] allArgs = new Object[2];
????? //allArgs[0] = a1;
????? //allArgs[1] = a2;
????? //Object[] result = (Object[])method.invoke(invokeTest, allArgs);//調(diào)用execute方法并獲取返回值
????? /**
?????? * 注意,以上幾句(21-26行)可以寫成下面一句
?????? * 目的是調(diào)用實例invokeTest的execute方法,參數(shù)(包含一個String數(shù)組和一個Integer對象)類型是Object
?????? * invoke()方法的第一個參數(shù)表示被調(diào)用的方法所屬類的實例,所以如果execute是靜態(tài)方法,
?????? * invoke的第一個參數(shù)可以為空
?????? */
????? Object[] result = (Object[])method.invoke(invokeTest, new Object[] {
????????? new String[] { "zhong", "cheng" }, new Integer(5) });
????? //打印出返回值
????? for(int i=0;i<result.length;i++){
??????? System.out.print(result[i]);
????? }
??? } catch (Exception e) {
????? e.printStackTrace();
??? }

? }

? /**
?? *
?? * 用于測試的execute方法,此處只是將String[]和Integer的值打印出來
?? * 并返回一個提示性的字符串?dāng)?shù)組
?? * @param String[] str
?? * @param Integer intN
?? * String[]
?? */
? public String[] execute(String[] str, Integer intN) {
??? for (int j = 0; j < str.length; j++) {
????? System.out.println(str[j]);
??? }
??? System.out.println(intN.intValue());
??? return new String[]{"display ","have ","bean ","finished "," !"};
? }

}

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的一个Java反射机制例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。