
Effective Java
在知识的海洋中遨游
github项目网址:https://github.com/lrn-white/meetingmanagement<br>优快云博客:https://blog.youkuaiyun.com/qq_33283652
展开
-
Effective Java (1~5)
第一条 考虑用静态工厂方法代替构造器构造函数:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法。静态工厂方法:直接可以通过静态方法来实例化一个对象,例如:HelloWorldFactory.getInstance()1.1 静态工厂方法与构造器不同的第一优势在于,它们有名字java中的构造函数要求与类名相同,这就导致构造函数的名称不够灵活,不能准确描述返回值。1.2...原创 2018-07-11 14:27:00 · 125 阅读 · 0 评论 -
Effective Java(61~65)
第61条 抛出与抽象相对应的异常如果不能阻止或者处理来自更低层的异常,一般的做法是使用异常转译,除非低层方法碰巧可以保证他抛出的所有异常对高层也适合才可以将异常从低层传播到高层。异常链对高层和低层异常都提供了最佳的功能:他允许抛出适当的高层异常,同时又能捕获低层的原因进行失败分析。第62条 每个方法抛出的异常都要有文档 始终要单独的声明受检的异常,并且利用Javadoc的@throws...原创 2018-08-03 09:54:01 · 203 阅读 · 0 评论 -
Effective Java(71~78)
第71条 慎用延迟初始化延迟初始化是延迟到需要域的值时才将它初始化的这种行为。如果 永远不需要这个值,这个域就永远不会被初始化。这种方法既适用于静态域,也适用于实例域。虽然延迟初始化主要是一种优化,但它也可以用来打破类和实例初始化中的有害循环。 private FieldType field; public synchronized FieldType getField() { ...原创 2018-08-07 11:14:48 · 165 阅读 · 0 评论 -
Effective Java(56~60)
第56条 遵守普遍接受的命名惯例第57条 只针对异常情况才使用异常1、异常机制的设计初衷是用于不正常的情形,所以很少会有JVM虚拟机实现试图对他们进行优化。2、把代码放在try-catch块中反而阻止了 现代JVM实现本来可能要执行的某些特定优化。3、对数据进行遍历的标准模式并不会导致冗余的检查。有些现代的JVM实现会将他们优化掉。第58条 对可恢复的情况使用受检异常,对编程错...原创 2018-08-02 10:45:47 · 121 阅读 · 0 评论 -
Effective Java(51~55)
第51条 当心字符串连接的性能public class Test { public static void main(String[] args) { //String String a = ""; long startTime=System.currentTimeMillis(); for (int i = 0;i&l...原创 2018-08-02 10:14:50 · 293 阅读 · 0 评论 -
Effective Java(46~50)
第46条 for-each循环优先于传统的for循环无法使用for-each循环的情况:1.过滤,需要遍历集合并删除选定的元素,需要显式的迭代器,以便调用它的remove方法2.转换,需要遍历列表或者数组,并取代它部分或者全部元素值,需要列表迭代器或者数组索引,以便设定元素的值3.平行迭代,并行地遍历多个集合,需要显式地控制迭代器或者索引变量,以便所有迭代器和索引变量都可以得到同步...原创 2018-08-01 10:35:09 · 296 阅读 · 0 评论 -
Effective Java(41~45)
第41条 慎用重载要确保同一重载方法的参数数目不同。public class Test { public static void testMethod(List<?> list) { System.out.println("1-------------"); } public static void testMethod...原创 2018-07-31 16:07:52 · 116 阅读 · 0 评论 -
Effective Java(36~40)
第36条 坚持使用Override注解使用Override注解来覆盖超类声明第37条 用标记接口定义类型标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。标接口在Java语言中有一些很著名的应用,比如Clonable,Serializable,RandomAccess,Remote等接口便是标识接口。标识接口,当一个类...原创 2018-07-27 11:31:15 · 135 阅读 · 0 评论 -
Effective Java(11~15)
第11条 谨慎地覆盖clone在默认的情况下,Object类中的clone是返回对象的逐域拷贝的,当然,这必须让这个类实现了Cloneable接口,如果类不实现这个接口却调用clone接口,就会抛出CloneNotSupportedException。这是接口的一种极端非典型的用法,也不值得去模仿。通常情况下,实现接口是为了表明类可以为它的客户做些什么,然而对于Cloneable接口改变了超类...原创 2018-07-20 15:16:27 · 99 阅读 · 0 评论 -
Effective Java(26~30)
第26条 优先考虑泛型将类泛型化可以提高类型的安全性,方便客户端使用(无需显式强制转换类型)。第27条 优先 考虑泛型方法泛型方法就像泛型一样,使用起来比要求客户端转换输入参数并返回值的方法来的更加安全,也更加容易。就像类型一样,你应该确保新的方法可以不用转换就能使用,这通常意味着要将它们泛型化。并且就像类型一样,还应该将现有的方法泛型化,使新用户使用起来更加轻松,且不会破坏现有的客户...原创 2018-07-25 10:57:39 · 138 阅读 · 0 评论 -
Effective Java(6~10)
第六条 消除过期的对象引用在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。第七条 避免使用终结方法第八条 覆盖equals方法时请遵守通用约...原创 2018-07-19 15:13:16 · 255 阅读 · 0 评论 -
Effective Java(21~25)
第21条 用函数对象表示策略如果一个类仅仅导出一个方法,它的实例就等同于一个指向该方法的指针,这样的实例就是函数对象。同策略模式。第22条 优先考虑静态成员类嵌套类是指被定义在另一个类内部的类。嵌套类分为四种:静态成员类,非静态成员类,匿名类,局部类。静态成员类public class MyClass{ \\... public static class MyMe...原创 2018-07-24 16:08:12 · 137 阅读 · 0 评论 -
Effective Java(16~20)
第16条 复合优于继承继承存在三个天然缺陷,这些缺陷会导致软件非常脆弱:1) 子类如果调用了父类的方法,那么就会对父类形成依赖,一旦父类做了改动,子类就很可能不能正常工作。2) 如果父类新增了方法,而子类恰好已经提供了一个签名相同但是返回值不同的方法,那么子类将无法通过编译。3) 在不应该继承的时候使用继承,会暴露不必要的API给子类。可以被继承的类要么在同一个包内(在同一个程序员...原创 2018-07-23 16:10:25 · 119 阅读 · 0 评论 -
Effective Java(66~70)
第66条 同步访问共享的可变数据尽量避免在线程间共享可变数据,将可变数据限制在单线程中。让线程短时间修改一个对象,并与其他线程共享,这是可以接受的,只需要同步修改的动作即可。不需要同步,其他线程也可以读取该对象,只要它以后没有再改变。总的来说,如果想要多个线程共享可变数据,那么读写都需要进行同步。第67条 避免过度同步为了避免死锁和数据破坏。千万不要从同步区域内部调用外来方法。更为一般...原创 2018-08-03 10:39:38 · 181 阅读 · 0 评论