本帖最后由 zyx67786110 于 2013-1-20 19:31 编辑
- <p>package cn.itcast.day1;
- import java.lang.reflect.Method;
- public class ReflectTest {
- public static void main(String[] args) throws Exception {
- //用反射的方式调用类中的main方法;
- String startingClassName =args[0];
- Method mainMethod =Class.forName(startingClassName).getMethod("main",String[].class);
- /*
- 问题一:这是张老师在讲获取main方法时,不能直接将 String[] arg s数据传进去,而提出的两种方法,谁能其中的原因更详细的解释下?
- */
- mainMethod.invoke(null,new Object[]{new String[]{"ball","wife"}});
- mainMethod.invoke(null,(Object)new String[]{"ball","wife"});
- /*
- 下边这一行中,为什么用new Object[]{}包一下就可以,而我用new String[] {}包一层就不行?
- */
- // mainMethod.invoke(null,new String[]{new String[]{"ball"}});
- //数组反射中的问题。
- int[] a1 =new int [3];
- int[] a2 = new int [4];
- int[][] a3 = new int[2][3];
- String[] a4 = new String[3];//{"111","222","333"};
- Class cl1 =a1.getClass();
- System.out.println(a1.getClass() == a2.getClass());
- System.out.println(a1.getClass() == a3.getClass());
- System.out.println(a1.getClass() == a4.getClass());
- /*
- 问题二:
- 上边的后个输出语句,会报错,错误信息如下,
- Exception in thread "main" java.lang.Error: Unresolved compilation problems:
- Incompatible operand types Class<capture#10-of ? extends int[]> and Class<capture#11-of ? extends int[][]>
- Incompatible operand types Class<capture#12-of ? extends int[]> and Class<capture#13-of ? extends String[]></p><p> at cn.itcast.day1.ReflectTest.main(ReflectTest.java:67)
- 既然张老师的视频里边能运行,说明是能通过编译的,为什么在我机子上就不行了?此外,如果是版本问题,新版本的不应该兼容原来的版本吗?
- */
- }
-
- class TestArguments{
- public static void main(String [] args){
- for(String arg:args)
- {
- System.out.println(arg);
- }
- }
- }
- </p>
复制代码 |