最近使用到了map,以前在.net里面是类似dictionary的类,java的一个实现是hashmap。但是这个的初始化远没c#语法来的方便,所以找了找最快捷的初始化方式:
1 public static HashMap<Integer, Integer> FieldHeaderMapping = new HashMap<Integer, Integer>(){ 2 { 3 put(0,NAME); 4 put(1,AGE); 5 }}
里面两个大括号的使用方法看起来很诡异,又搜了搜对此的注解说明。
第一个大括号是声明了一个匿名类,继承自HashMap,本例中是作为一个子类赋值给了FiledHeaderMapping对象。
第二个大括号是代表该匿名类的构造函数,<init>方法,实例化一个,里面放进去两个put()语句,这个子类里面不就有值了么。
随即想到了这么做的两个缺点:
1. 传回的是一个HashMap的子类,不是HashMap,涉及到某些特殊处理的,如需要Xnode或者XStream之类的对象,handler只认识特定的类,子类拿过来是没法处理的。
2. 写着写着忘了。。
认真学习完了java,看到有的同学为了探究java之根本,反编译了.class文件,看来nb的都喜欢反编译和读源码,何不找个源码来看看HashMap,apt里面搜了一下还真有:
sudo apt-cache search java
那就果断安装啊。
sudo apt-get install openjdk-7-source
装完了在eclipse里面F3,看不到。囧。看来还没那么智能,自己找一下映射吧。。
结果发现openjdk-7-source不知道装在了哪里。。。
本着自己努力挖掘少用搜索引擎的原则。我想了半天想到了dpkg命令。
dpkg --help
先list全部:
sudo dpkg -l | grep jdk
然后就看到了安装的包: openjdk-7-source
再看看dpkg的参数:-L查看所有属于这个包的文件!
dpkg -L openjdk-7-source
哇卡卡,找到了,在eclipse里面先在HashMap上点F3,点击attach source,把src.zip找到,ok了