请问java如何用字符串读取同名成员变量

walkuere 2018-03-15 09:46:24
比如class ClassA{String username}

ClassA obj;
get(obj,"username")可以获取到obj的成员变量username
听说mybatis封装了?怎么用?怎么入门?
lombok好不好?
自己封装getFields呢?有没有办法解决try效率问题?
暴力写一个类全部用 instanceof然后转换类型怎么样?
...全文
703 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkuere 2018-04-12
  • 打赏
  • 举报
回复
自己用反射, 另外mybatis封装了,好用 虽然不像c#那样直接用,而且try的效率是不可能比c#,但能用了
walkuere 2018-03-15
  • 打赏
  • 举报
回复
就是楼上的意思,好羡慕c#那样轻松


public String set(Object obj,String fieldname,Object value)
	{
		String valuetype=value.getClass().getName();		
		try {
			Field field=obj.getClass().getDeclaredField(fieldname);
			String totype=field.getType().getSimpleName();
			if (typeTransferok(valuetype,totype)==false)
				return "type cannot be converted from "+valuetype+" to "+totype;
			field.setAccessible(true);
			Object typedvalue=value;
			if (ballowFloatToInt&&(value instanceof Float||value instanceof Double))
			{
				typedvalue=Math.floor((double) value);
			}
			field.set(obj, typedvalue);
			//if run failed, will not return null
			return null;
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "error";
	}
我现在封装了单个的
maradona1984 2018-03-15
  • 打赏
  • 举报
回复
或许你想要的东西是反射 但感觉你语言需要稍微组织下,别人很难get到你的点

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧