谁能解释下这段代码
String pm=“cc.ww.fruitRegPm”;
{
Class pmclass = Class.forName(pm);
Constructor cons = pmclass.getConstructor(new Class[0]);
Object data = cons.newInstance(new Object[0]);
Method select = pmclass.getDeclaredMethod( "select ",
new Class[] {DBManage.class,
Integer.class, });
Class returnclass = select.getReturnType();
Constructor retcons = returnclass.getConstructor(new Class[0]);
Object retdata = retcons.newInstance(new Object[0]);
retdata = select.invoke(data, new Object[] {dbmanage, fruitId});
if (retdata.toString().equals( "1 ")) { //存在记录
operAtt = "edit ";
}
else if (retdata.toString().equals( "0 ")) { //不存在记录
operAtt = "add ";
}
}
这段代码什么意思能给解释下各类的使用吗?
------解决方案--------------------java反射机制,动态构造类的方法,参数和返回值,调用方法,并根据返回值进行操作
关于java反射机制可以参考:
http://www.blogjava.net/Swing/archive/2007/07/05/128263.html
------解决方案--------------------楼上说得正确 Java 的反射机制,用于动态加载类、调用方法等。
// 根据 pm 加载一个类
Class pmclass = Class.forName(pm);
// 获得这个类的一个空参数的构造方法
Constructor cons = pmclass.getConstructor(new Class[0]);
// 根据上面的构造方法生成一个对象
Object data = cons.newInstance(new Object[0]);
// 从 pmclass 的类中寻找到方法名为 select,有两个参数,类型分别是:
// DBManage 和 Integer 类型
Method select = pmclass.getDeclaredMethod( "select ",
new Class[] {DBManage.class, Integer.class, });
// 获得这个方法的返回类型的类
Class returnclass = select.getReturnType();
Constructor retcons = returnclass.getConstructor(new Class[0]);
Object retdata = retcons.newInstance(new Object[0]);
// 使用 dbmanage, fruitId 两个参数调用 select 方法,并将结果赋给 retdata
retdata = select.invoke(data, new Object[] {dbmanage, fruitId});