首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
Model怎么生成toString方法,打印所有属性呢?
fansunion
2018-11-14 17:01
eclipse可以根据 字段,生成toString方法。
model没有属性。
如果用方法,必须手动选,很多方法是model底层类的方法。
项目:
JFinal
1
评论区
JFinal
2018-11-14 17:25
_getAttrs() 得到 Map, 迭代生成即可
回复
fansunion
2018-11-14 20:17
@JFinal
这样玩呀。每个类都得复制粘贴,自己的类 已经继承Model了,多重继承麻烦。eclipse的自动生成又不好用。只能搞个工具方法了。。。
回复
fansunion
2018-11-19 15:06
@JFinal
刚刚看了下以前的代码,用super.toString就行了。自己的model,虽然有get set方法,但是属性都是用父类的。父类的toString,model里的那个,就是 打印的attrs的。
这几行代码,手动写比较快,Eclipse自动生成,选择super这个比较慢,而且会增加“Brand toString”之类的描述。哦也。
@Override
public String toString() {
return super.toString();
}
回复
fansunion
2018-11-19 15:59
@JFinal
toString有学问。
//排除某些字段,比如post的内容content字段
public static String toString(Model model,List exceptAttrList) {
StringBuilder sb = new StringBuilder();
sb.append('{');
boolean first = true;
Set> attrs=model._getAttrsEntrySet();
for (Entry e : attrs) {
String key=e.getKey();
if(ListKit.isNotEmpty(exceptAttrList) && exceptAttrList.contains(key)){
logger.info("JFinalKit->toString,key = {} except",key);
continue;
}
if (first)
first = false;
else
sb.append(", ");
Object value = e.getValue();
if (value != null)
value = value.toString();
sb.append(e.getKey()).append(':').append(value);
}
sb.append('}');
return sb.toString();
}
回复
发送
我要反馈
热门反馈
扫码入社