来源:蜘蛛抓取(WebSpider)
时间:2017-11-02 09:14
标签:
实体类属性起别名
18:18 提问
通过类反射获取实体类对象
private String[] colName = // 属性名数组数组
private String[] colType = // 存放实体类的数据类型 如java.lang.Long
private String[] colValue = // 要存进去的值
请问一下我有一个实体类
要把colValue里的数据以colType类型存到TbUser实体类的属性里
并且返回这个实体类
请大神给个思路 。。。 多谢
按赞数排序
如果colType仅仅是简单类型,那么最简单的是直接switch类型然后用 xxx.parseXXX() 解析字符串就可以了
package com.
import java.beans.BeanI
import java.beans.IntrospectionE
import java.beans.I
import java.beans.PropertyD
import java.lang.reflect.InvocationTargetE
public class ReflectSetObject {
static class TbUser {
private int userId;
private String userN
private String userP
public int getUserId() {
return userId;
public void setUserId(int userId) {
this.userId = userId;
public String getUserName() {
return userN
public void setUserName(String userName) {
this.userName = userN
public String getUserPassword() {
return userP
public void setUserPassword(String userPassword) {
this.userPassword = userP
public String toString() {
// TODO Auto-generated method stub
return "userId = " + userId + " ,userName = "+userName+ " ,userPassword = "+userP
* 未用colType,因Class c = Class.forName(colType[i]); c.cast(colValue[i])对int不行
* @param cls
* @param colName
* @param colType
* @param colValue
public &T& T setObject(Class&T& cls, String[] colName, String[] colType, String[] colValue){
t = cls.newInstance();
BeanInfo info = Introspector.getBeanInfo(cls);
PropertyDescriptor[] pros = info.getPropertyDescriptors();
for (PropertyDescriptor pro : pros) {
String pname = pro.getName();
for(int i=0; i&colName.i++){
if(pname.equals(colName[i])){
Class c = Class.forName(colType[i]);
c.cast(colValue[i]);
Class&?& c = pro.getPropertyType();
if(c == java.lang.Integer.class || c == int.class){
pro.getWriteMethod().invoke(t, java.lang.Integer.valueOf(colValue[i]));
}else if(c == java.lang.String.class){
pro.getWriteMethod().invoke(t, colValue[i]);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IntrospectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
public static void main(String[] args){
ReflectSetObject s = new ReflectSetObject();
TbUser u = s.setObject(TbUser.class, new String[]{"userId","userName","userPassword"},
null, new String[]{"123", "zhansan", "123"});
System.out.println(u);
用JavaBean自省,可以实现但不建议你这么操作。看你这个像是数据库操作。
其他相关推荐关于实体类的id属性。。。【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:665,657贴子:
关于实体类的id属性。。。收藏
为什么每个实体类都需要id这个属性呢?保存一个对象用不着吧?获取一个对象也用不着吧?更新通常也不会用到?删除?三大框架就hiberate感觉最难了。。有啥好书么?
51CTO学院11年行业品牌,1400万用户选择,中国专业IT技能学习平台,java.java资深名师授课,0基础从入门到精通,java报名与培训中心.
为啥你觉得不需要,我刚刚好觉得最简单……
那id是对应你数据库中的那个id。你觉得需要补。
登录百度帐号推荐应用java如何反射遍历实体类属性和类型并赋值和获取值
- 谷普下载 |
| 您所在的位置: >
> java如何反射遍历实体类属性和类型并赋值和获取值java如何反射遍历实体类属性和类型并赋值和获取值更新:&&&&编辑:电脑问题&&&&来源:谷普下载站&&&&人气:加载中...&&&&字号:|标签:&& 实例如下: import java.lang.reflect.F import java.lang.reflect.InvocationTargetE import java.lang.reflect.M import java.util.D /** * 获取实体类型的属性名和类型 * @param model 为实体类 * @author kou 为传入参数 */ public class GetModelNameAndType { public static void testReflect(Object model) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException,
InstantiationException { // 获取实体类的所有属性,返回Field数组 Field[] field = model.getClass().getDeclaredFields(); // 获取属性的名字 String[] modelName = new String[field.length]; String[] modelType = new String[field.length]; for (int i = 0; i
field. i++) { // 获取属性的名字 String name = field[i].getName(); modelName[i] = // 获取属性类型 String type = field[i].getGenericType().toString(); modelType[i] = //关键。。。可拜访私有变量 field[i].setAccessible(true); //给属性设置 field[i].set(model,
field[i].getType().getConstructor(field[i].getType()).newInstance(kou)); // 将属性的首字母大写 name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1) .toUpperCase()); if (type.equals(class java.lang.String)) { // 如果type是类类型,则前面包括class ,后面跟类名 Method m = model.getClass().getMethod(get + name); // 调用getter方式获取属性值 String value = (String) m.invoke(model); if (value != null) { System.out.println(attribute value: + value); } } if (type.equals(class java.lang.Integer)) { Method m = model.getClass().getMethod(get + name); Integer value = (Integer) m.invoke(model); if (value != null) { System.out.println(attribute value: + value); } } if (type.equals(class java.lang.Short)) { Method m = model.getClass().getMethod(get + name); Short value = (Short) m.invoke(model); if (value != null) { System.out.println(attribute value: + value); } } if (type.equals(class java.lang.Double)) { Method m = model.getClass().getMethod(get + name); Double value = (Double) m.invoke(model); if (value != null) { System.out.println(attribute value: + value); } } if (type.equals(class java.lang.Boolean)) { Method m = model.getClass().getMethod(get + name); Boolean value = (Boolean) m.invoke(model); if (value != null) { System.out.println(attribute value: + value); } } if (type.equals(class java.util.Date)) { Method m = model.getClass().getMethod(get + name); Date value = (Date) m.invoke(model); if (value != null) { System.out.println(attribute value: + value.toLocaleString());共2页:
| 分类选择您可能在找这些安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&