java 反射 数据类型转换
我用反射获取表单数据表单接收值全为String但属性数据类型多样需转换publicvoidprocessActionFrom(HttpServletRequestreq)...
我用 反射获取表单数据 表单接收值全为String 但属性数据类型多样 需转换
public void processActionFrom(HttpServletRequest req) {
try {
// 类加载器
// 01 根据doname的名称来获取到需要被加载的className
String ename = doname + "From";
// 02 根据ename的名称来获取className
String eclassName = prop.getProperty(ename);
// 03实例化对象
Class cla = Class.forName(eclassName);
ifrom = (IFrom) cla.newInstance();
// 01 获取值 根据表单提交参数名称来获取值
Enumeration<String> es = req.getParameterNames();
while (es.hasMoreElements()) {
// 获取到提交的参数名
String paraname = es.nextElement();
// 获取值
String paravalue = req.getParameter(paraname);
// 给属性进行赋值
// 01 得到方法名
String mename = "set" + paraname.substring(0, 1).toUpperCase() + paraname.substring(1);
//这里转换?
Method method = cla.getDeclaredMethod(mename, String.class);
method.setAccessible(true);
method.invoke(ifrom, paravalue);
}
} catch (Exception e) {
e.printStackTrace();
}
}
大佬们给给看看 展开
public void processActionFrom(HttpServletRequest req) {
try {
// 类加载器
// 01 根据doname的名称来获取到需要被加载的className
String ename = doname + "From";
// 02 根据ename的名称来获取className
String eclassName = prop.getProperty(ename);
// 03实例化对象
Class cla = Class.forName(eclassName);
ifrom = (IFrom) cla.newInstance();
// 01 获取值 根据表单提交参数名称来获取值
Enumeration<String> es = req.getParameterNames();
while (es.hasMoreElements()) {
// 获取到提交的参数名
String paraname = es.nextElement();
// 获取值
String paravalue = req.getParameter(paraname);
// 给属性进行赋值
// 01 得到方法名
String mename = "set" + paraname.substring(0, 1).toUpperCase() + paraname.substring(1);
//这里转换?
Method method = cla.getDeclaredMethod(mename, String.class);
method.setAccessible(true);
method.invoke(ifrom, paravalue);
}
} catch (Exception e) {
e.printStackTrace();
}
}
大佬们给给看看 展开
2个回答
展开全部
给你一段属性反射的代码,你自己看着改吧
Field[] fs = userCla.getDeclaredFields();
for(int i = 0 ; i < fs.length; i++){
Field f = fs[i];
f.setAccessible(true); //设置些属性是可以访问的
Object val = f.get(bean);//得到此属性的值
System.out.println("name:"+f.getName()+"\t value = "+val);
String type = f.getType().toString();//得到此属性的类型
if (type.endsWith("String")) {
System.out.println(f.getType()+"\t是String");
f.set(bean,"12") ; //给属性设值
}else if(type.endsWith("int") || type.endsWith("Integer")){
System.out.println(f.getType()+"\t是int");
f.set(bean,12) ; //给属性设值
}else{
System.out.println(f.getType()+"\t");
}
}
基本就是getType()之后,根据type的类型来反射
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询