今天尝试着将实体存进SharedPReference中的时候遇到了存取格式的问题,考虑过serializable接口,又想到了JSON格式的对象存取,于是在网上搜索了相关的方法后发现几乎全是基于StringBuilder实现的(虽然“+”在字节码上也是StringBuilder实现),但是有轻微强迫症的我试图尽可能的去掉IDE给我的黄色警告,于是进一步在automationrhapsody找到了符合个人理念的实现方式:
简单的JSON toString():
public java.lang.String toString() {#if ( $members.size() > 0 )#set ( $i = 0 )return "{/"$classname/":{"#foreach( $member in $members )#if ( $i == 0 )+ "###else+ ", ###end#if ( $member.array )/"$member.name/":" + java.util.Arrays.toString($member.accessor)#elseif ( $member.string || $member.primitive || $member.numeric || $member.boolean || $member.enum )/"$member.name/":/"" + $member.accessor + "/""#else/"$member.name/":" + $member.accessor#end#set ( $i = $i + 1 )#end+ "}}";#elsereturn "{$classname}";#end}会生成如下格式的代码:@Override public String toString() { return "{className:{" + "/"field1/":/"" + field1+ "/"" + ", /"field2/":/"" + field2+ "/"" + "}}"; }如果不想生成className的话修改上面第四行和倒数第五行就行了。原文还提到了包含super.toString()的实现,这里就不做展示了。
新闻热点
疑难解答