设为首页 收藏本站
查看: 904|回复: 0

[经验分享] 最近看mybatis源码分享两个小知识点

[复制链接]

尚未签到

发表于 2016-11-28 06:48:48 | 显示全部楼层 |阅读模式
最近看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的写法,提高执行效率。
 
 
 
怎么样,你是不是这么写的?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306291-1-1.html 上篇帖子: Struts2,Mybatis与Spring事务管理的集成 下篇帖子: javaWeb开发框架 ssmy 代码生成 Struts2 spring3 mybatis jquery
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表