最近看mybatis源码,看了一段时间了,还在继续,里面有很多好东西,后面整理出来分享给大家,这里先写两个小的细节,可能有些同学已经是这么写了,那么就当做你没看好了。希望你觉得是新鲜的。
先来看下面这段代码,这个代码本身没什么意义,只是表示一下写法:
package collection; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MTest { private static final Map<Integer,String> map = new HashMap<Integer,String>(){ /** * */ private static final long serialVersionUID = 1L; { put(1, "a"); put(2, "b"); } }; public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.toArray(new String[list.size()]); } }
上面代码中包含了我要说的两个点:
第一点:在写静态map的时候直接匿名内部类初始化,代替static块:
原来我是这么写:
private static final Map<Integer,String> map = new HashMap<Integer,String>(); static{ map.put(1,"a"); map.put(2,"b"); }
现在可以用如下代码代替:
private static final Map<Integer,String> map = new HashMap<Integer,String>(){ /** * */ private static final long serialVersionUID = 1L; { put(1, "a"); put(2, "b"); } };
这种写法的优点是把map的创建和初始化绑在一起,在代码上比较固定,不容易出错,如果用静态块去初始化,那么静态库必须放在map下方的任意地方,随意性比较大,如果中间隔很多代码不易阅读。类似于
int i=0;和 int i; i=0;一样。静态map和静态块几乎同时加载,在性能和编译执行上没有太大的差别。如果理解了这种写法,就会发现这种方式简洁明了。缺点是利用了匿名内部类,对刚接触java的新手来说觉得是难以理解的写法。
第二点:集合类转数组的时候指定数组大小:
原来我的写法:
list.toArray(new String[]{});
改用如下写法更好:
list.toArray(new String[list.size()]);
这种写法的好处是明确指定大小能让系统少进入一些条件之中,能提高效率,源码这里有不贴了,读者可以自己去看看。其实这一点跟我们平时使用数组的写法一样,如 :
Integer[] s1= new Integer[]{};
Integer[] s2= new Integer[5];
如果已经很明确的知道有多少元素,那就使用s2的写法,提高执行效率。
怎么样,你是不是这么写的?
相关推荐
Mybatis知识点整理,Dome代码,简单易懂,很适合新手学习
MyBatis源码分析.pdf
搭建maven+springmvc4+mybatis源代码
最新版的mybatis源代码和jar包,仅供WEB后台开发做Spring+SpringMVC+Mybatis使用,直接解压即可。
文件中是MyBatis 源代码,对于学习MyBatis的朋友非常有帮助。
mybatis知识点.docx
Mybatis源码分析主要分三部分: 1.使用案例讲解 2.Mybatis中用的所有设计模式讲解 3.源码分析
MyBatis 中文注释源码,直接导入eclipse工程即可,源码中加了中文注释,可以学习研究底层,成就自我成长!
springBoot整合mybatis源码,直接可以在idea中运行,简单易学,上手快
Mybatis源码分析
mybatis源码包mybatis源码包mybatis源码包mybatis源码包
《MyBatis 基础笔记》一文的源代码
mybatis源码
mybatis的源码分析视频,有详细的视频和文档。 视频地址亲测有效。失效了,请联系我。
阅读mybatis源码所记笔记。 基本: 1.数据源获取 2.mapper的sql语句获取 3.怎么去获得到的resultSet 重点: 1.orm是什么:体现于resultSet的数据库类型和java类型的转换 2.mybatis的一级缓存原理(简单的ifelse判断...
源码下载!绝对的mybatis源码,在Myeclipes或Eclipse中直接引入即可看源码!
mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码...
mybatis-3.2.2.jar mybatis-spring-1.2.1.jar,与spring融合时使用的两个包
MyBatis 分页源码简单