Java代码
System.out.println("-------------------以下为利用类反射机制测试相同结果----------------------");
//动态构造未知类型的类
Class cls = Class.forName("com.ls.xml.MessageDocument");
//获取第一个内部类成员,如果有多个可以遍历获取,代码大家自己看JDK吧
Class subCls=cls.getClasses()[0];
//打印出此内部类的所有方法,还可以打印出更多信息,如构造方法等,请查看JDK文档
for (int j = 0; j < subCls.getMethods().length; j++) {
System.out.println("内部类的方法"+j+":"+subCls.getMethods()[j]);
}
//获取内部类方法
//下面参数new Class[]{String.class}为要调用的方法的类型,parse为方法名称
Method mtd = subCls.getMethod("parse",new Class[]{String.class});
//由于要调用的是内部类的静态方法,因此,不需要实例化内部类,下面为实例化的方法,注销掉
//Object obj = (Object)subCls.newInstance();
//inputStream为入参的具体内容
Object result=mtd.invoke(subCls,new Object[]{inputStream});
//将结果转换为相应的类型,做一下测试,看看是不是想要的结果
MessageDocument messageDocument=null;
messageDocument=(MessageDocument)result;
System.out.println(messageDocument.getIntObjectName());
System.out.println(result+"-----------------------------------------------");
System.out.println("-------------------以下为利用类反射机制测试相同结果----------------------");
//动态构造未知类型的类
Class cls = Class.forName("com.ls.xml.MessageDocument");
//获取第一个内部类成员,如果有多个可以遍历获取,代码大家自己看JDK吧
Class subCls=cls.getClasses()[0];
//打印出此内部类的所有方法,还可以打印出更多信息,如构造方法等,请查看JDK文档
for (int j = 0; j < subCls.getMethods().length; j++) {
System.out.println("内部类的方法"+j+":"+subCls.getMethods()[j]);
}
//获取内部类方法
//下面参数new Class[]{String.class}为要调用的方法的类型,parse为方法名称
Method mtd = subCls.getMethod("parse",new Class[]{String.class});
//由于要调用的是内部类的静态方法,因此,不需要实例化内部类,下面为实例化的方法,注销掉
//Object obj = (Object)subCls.newInstance();
//inputStream为入参的具体内容
Object result=mtd.invoke(subCls,new Object[]{inputStream});
//将结果转换为相应的类型,做一下测试,看看是不是想要的结果
MessageDocument messageDocument=null;
messageDocument=(MessageDocument)result;
System.out.println(messageDocument.getIntObjectName());
System.out.println(result+"-----------------------------------------------");