Model怎么生成toString方法,打印所有属性呢?

eclipse可以根据 字段,生成toString方法。

model没有属性。


如果用方法,必须手动选,很多方法是model底层类的方法。

评论区

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();
}

热门反馈

扫码入社