随笔分类 - Effective java
摘要:转载:https://www.cnblogs.com/az4215/p/11489712.html
阅读全文
摘要:1.基本类型数组: 这个数组会被当作一个数组对象,返回一个List<int[]>,int[]
阅读全文
摘要:工作中用的蛮多的最近整理下,概括地说 通过这个工具可以让一个json在json串,JSONObject,java对象之间进行转化 首先我们先写2个bean来构成一个比较复杂的json串: 接着是相关的转换:
阅读全文
摘要:捕获后重新抛出: printStackTrace()方法显示的将是原来异常抛出点的调用栈信息,而并非重新抛出点的信息。想要更新这个信息,可以调用fillInStackTrace()方法,这将返回一个Throwable对象,它是通过把当前调用栈信息填入原来那个异常对象而建立的。 如果抛出一个新异常,有
阅读全文
摘要:抛出受检异常的时候,我们的接口应该带上throw关键字,但通过lambda表达式实现的Consumer的accept方法并不带有关键字,因此在lambda表达式中不能抛出受检异常必须把它吃掉
阅读全文
摘要:1.永远不要通过返回Optinoal的方法返回null,因为它彻底违反了optional的本意 2.optional本质上是一个不可变的集合,最多只能存放一个元素。Optional<T>没有实现Collection<T>接口,但原则上是可以的。 3.optional本质上与受检异常相类似,因为它们强
阅读全文
摘要:1.尽可能使每个类或者成员不被外界访问 2.如果方法覆盖了超类中的一个方法,子类中的访问级别就不允许低于超类中的访问级别,这样可以确保任何可使用超类的实例的地方也都可以使用子类的实例。 3.公有类的实例域绝不能是公有的。但是有一个特例:类的成员域由静态final常量构成,可以公有的静态final域来
阅读全文
摘要:我们在重写equals的时候必须满足几个原则,否则,类在容器和其他场景下会出现奇怪的行为: 1.A.equals(A)=true, 2.对称性。即A.equals(B)=true;则B.equals(A)=true;这一点的反例为:我们想要与其他类实现互操作时。比如类A重写equals并且满足A.c
阅读全文
摘要:在JDK7以前,Java没有自动关闭外部资源的语法特性,直到JDK7中新增了try-with-resource语法,才实现了这一功能。 将外部资源的句柄对象的创建放在try关键字后面的括号中,当这个try-catch代码块执行完毕后,Java会确保外部资源的close方法被调用。 try-with-
阅读全文
摘要:弊端 1.执行的时间不确定,资源释放不能靠这2个方法。Cleaner规范指出:“清除方法在System.exit期间的行为是与实现相关的。不确保清除动作是否会被调用。” 2#.如果忽略在终结过程中被抛出来的未背捕获的异常,该对象的终结过程也会终止。正常情况下,未被捕获的异常会使线程终止,并打印出栈轨
阅读全文
摘要:问题由来 数组为基础实现的集合在退出元素时,并不会将引用指向空指针,过期引用存在对象便不会被回收。 措施 1.WeakHashMap当其中的key没有再被外部引用时,就会被回收。ThreadLocal就用到了WeakHashMap 2.LinkedHashMap的removeEldestEntry方
阅读全文
摘要:弊端: 虽然String.matches方法最易于看一个字符串是否与正则表达式相匹配。但并不适合在注重性能的情形中重复使用。 问题在于,它内部为正则表达式创建了一个Pattern实例,却只用一次,之后就可以进行垃圾回收了。创建Pattern实例的成本很高。因为需要将正则表达式编译成一个有限状态机 为
阅读全文
摘要:实现方式 1.在类的域中创建一个final引用,并将构造器置未private: 2.在通过静态工厂方法: 3.声明一个包含单个元素的枚举类型 反序列化如何保证单例: 对于1和2,在实现Serializable接口的同时要重写readResolve(): 这样当JVM从内存中反序列化地"组装"一个新对
阅读全文
摘要:尴尬的多参数构造器: 很多时候我们会碰到有十几二十个成员的类,这让我们用构造器去实例化他们变得不好写,不好读。以往我们有2种解决方法。 1.重叠构造器的使用: 诸如People(int age),People(int age,int sex),People(int age,int sex,Strin
阅读全文
摘要:使用场景: 1.静态方法虽同样是为了实例化对象,但是在语法上不需要与类名保持一致,则在命名上更加灵活 更容易表述实例化的目的 2.可以将构造方法private,只通过静态工厂方法做实例化,即不暴露构造器给客户端,而在静态方法中可以做更多的事情(比如单例,根据参数值进行不同的实例化) 3.可以将子类的
阅读全文

浙公网安备 33010602011771号