本帖最后由 刘军亭 于 2013-1-23 17:50 编辑
- package cn.liu.javaenhance;
- import java.lang.reflect.Method;
- /*public class ReflectTest {
- public static void main(String[] args) throws Exception {
-
- //String类型的一维数组
- String[] s = {"111","222"};
-
- Method method = Class.forName("cn.liu.javaenhance.R").getMethod("printArray", String[].class);
-
- //传入的参数必须转换成一个不可拆分的对象,防止jvm进行拆包。或者在数组的外边再给他Object[]{s}打包。
- method.invoke(null,(Object)s);</font>
- }
- }
- class R{
-
- public static void printArray (String[] strs){
- for(String str : strs){
- System.out.println(str);
- }
- }
- }*/
- //-----------------------下面参数是int[]类型---------------------------------------------------------------
- public class ReflectTest {
- public static void main(String[] args) throws Exception {
-
- int[] i = {1,2};
-
- int[] [] ii = {{1,2},{3,4}};
- String[] [] ss = {{"111","222"},{"333","444"}};
-
- Method method = Class.forName("cn.liu.javaenhance.R").getMethod("printArray", int[].class);
-
- //为什么int类型的数组就不用转换成不可拆分的对象了,也不用再给他包一层,防止jvm对参数进行解包了呢?
- method.invoke(null,i);
-
- //method.invoke(null,ii);//经过测试int类型二维数组也是没问题的
- //method.invoke(null,ss);//经过测试String类型二维数组也是没问题的 </font>
- }
- }
- //用来进行反射的类
- class R{
- public static void printArray (int[] strs){
- for(int str : strs){
- System.out.println(str);
- }
- }
- }
复制代码 |