事情是这样的-- 这不入职刚进来。然后得换编译环境了。于是就出现了接下来的事情。
由于我来的比较巧,正好公司从SVN转GitLab,然后刚从SVN checkout下代码后就被告知要转(但是和我没什么关系)然后我inport所有代码到eclipse之后发现XD这个java代码不清真。中间很多list的迭代 以及异常的写法很是离奇(年轻的农村人没见过世面,Java8推出四年竟然不知道新特性!)所以问了下我的团队大当家,他告诉我这个是lambda表达式,Java8的新特性。于是为了能够读懂源码我开始了:
首先在其他地方有个特别详细的博客:
http://www.importnew.com/16436.html
结合公司的例子,也大概明白了是怎么回事。而公司里更多用来forEach迭代。
这里有更详细描述迭代:http://blog.csdn.net/renfufei/article/details/24600507
而继此之后继续推进发现bean层的entriy很多都没有提供get/set方法,但是在其他地方装配类的时候依旧可以使用set方法。xd,然后自己经过一番研究才发现是插件。
lombok
下载好后双击安装 一路无脑确定,然后在使用的时候注意一下几点:
package com.hbc.test; import java.util.Arrays; import java.util.List; import lombok.Data; import org.junit.Test; @Data public class Testclass { private int no; private String name; private List<String> city; public String toString(){ return "{\""+no+"\":\""+name+"\",\"from\":"+city+"}"; } @Test public void Testfor() { try { Testclass a1 = new Testclass(); List<String> list = Arrays.asList("Beijing","Shanghai","Lanzhou","HangZhou"); System.out.println(list); a1.setCity(list); a1.setNo(1); a1.setName("Test1"); System.out.println(a1.toString()); } catch (Exception e) { e.printStackTrace(); } } }
这里有一个注解@Data 而以下是有关注解的详细解释:
http://blog.csdn.net/sunsfan/article/details/53542374
然后就是json了。之前Python是做了不少相关的东西,后来在Git上看到一个好玩的东西:fastJSON 创于星星第三大的集团阿里(第一谷歌 第二fb 第三阿里 科科)
接下没多说的:测试类 一看都懂 注意下注解就行
User.java import lombok.Data; @Data public class User { private Integer id; private String name; private Integer age; }
Group.java import java.util.List; import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; @Data public class Group { @JSONField(name = "no",ordinal = 1) private Integer id; private String message; @JSONField(name = "users",ordinal = 3) private List<User> lists; //这里我使用@Data注解装配了Get/Set,但是为了使用JSONFiled--: //可以通过注释注解来明白JSONField的作用 //这里也可使用serialize/deserialize指定字段不序列化 eg: //@JSONField(serialize = false) //使用ordinal指定字段的顺序 @JSONField(name = "FileMessageStatus",ordinal = 2) public String getMessage(){ return message; } }
import java.util.Arrays; import java.util.List; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; import com.alibaba.fastjson.*; @SuppressWarnings("all") @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestFastJson { private static String jsonString; @Test public void ToJson() { Group tk = new Group(); tk.setId(1); tk.setMessage("ok"); User us = new User(); User us1 = new User(); User us2 = new User(); us.setId(1); us.setName("Vicetone"); us.setAge(19); us1.setId(2); us1.setName("Zedd"); us1.setAge(22); us2.setId(3); us2.setName("R3hard"); us2.setAge(55); List<User> list = Arrays.asList(us, us1, us2); tk.setLists(list); // 序列化 String jsonString = JSON.toJSONString(tk); System.out.println(jsonString); this.jsonString = jsonString; } @Test public void ToObject() { String jsonString = this.jsonString; // 反序列化 try { Group tk = JSON.parseObject(jsonString, Group.class); System.out.println(tk.getLists()); } catch (NullPointerException e) { e.printStackTrace(); } // 注意注解:https://github.com/alibaba/fastjson/wiki/JSONField } }
相关的简单就这么多 - 难的部分正在啃 搞定会写log。