Effective Java读后分享 (二)

接一,我继续分享些tips。

好吧。废话不多说,笔接上文。

 1.使可变性最小化。这个是对于final关键字而言的。final关键字可以用来修饰类,方法, 属性等。用final修饰的类不可被继承,修饰的方法不能被重写, 修饰的属性其引用不能更改。而这里所说的使可变性最小化,是对final修饰的类而言的,使一个类的可变性最小化, 需要遵守以下几条规则。

  (1). 不提供任何会修改对象状态的方法

  (2). 保证类不会被扩展(继承方式的扩展)

  (3).声明所有的域都为私有的

  (4). 确保对任何可变组件的互斥访问

经过以上规则的约束, 你将得到一个线程安全的不可变类。在jdk的类库当中就有很多类被设计成了不可变类。其中大家都知道当数String了,但是其他的基本类型的包装类,其实也被设计成了不可变类,比如Byte,Character,Boolean,Integer,Double,Long等。被设计成不可变类,说明实例状态可以在多个线程之间安全共享,同样也说明实例并不提供修改内部状态的方法。就算提供,返回的也是一个新的实例。

2.标记接口

这一招在java中使用的也比较频繁,比如说Serializable,Cloneable等等都属于标记接口,这些接口都是一个空接口,所谓空接口,意思是说它没有任何声明方法和默认方法,使用它,仅仅用来标记当前类是否具有某种能力,比说说是否支持序列化,是否支持clone等等。

3.关于stream

关于stream的实现原理什么的,Effective Java这本书里讲得并不算深刻,只是讲了许多注意事项。所以我在此推荐一个博客给大家,https://www.cnblogs.com/CarpenterLee/p/6545321.html

这篇博客清晰的讲解了stream的api的使用,stream的底层实现原理,还有stream和传统for的性能比较。基本上在一些简单的操作上,for循环是有性能优势的,但是在复杂的操作上stream的性能是要好一些的。

4.

 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值