cc's blog

Tags · java

Home

About

Archives

java

函数式接口学习

函数式接口:实际上感觉基本体现在参数的配置上 Function:<T,R> 参数很正常,参数->结果 R apply(T t) 相当于方法的调用 compose(Function before) 先调用before再调用本身 andThen(Function after) 与上面的相反 Predict:<T, boolean> 返回为boolean boolean test(T t) 相当于方法的调用 and(Predict) 与 or(Predict) 或 negate 取反 Supplier: 没有参数传入,直接返回一个结果,相当于new的感觉 get() 方法的调用 Consumer: 没有参数返回,直接消费参数 accept(T t) 方法的基..

Read more
java

反射

创建实例。 反射通过: Class<?> c = String.class; Object str = c.newInstance(); 与new的区别: new:强类型。相对高效。能调用任何public构造。 newInstance: 弱类型。低效率。只能调用无参构造,是实现IOC、反射、面对接口编程 和 依赖倒置 等技术方法的必然选择,new 只能实现具体类的实例化,不适合于接口编程。 正因为newInstance只能调用无参构造,所以Constructor对象就十分有必要了: Class<?> c = String.class; Constructor constructor = c.getConstrutor(String.class); Object o = con..

Read more
java

字段无多态

节选《深入理解java虚拟机》 一个有意思的例子: package org.fenixsoft.polymorphic; /** * 字段不参与多态 * @author zzm */ public class FieldHasNoPolymorphic { static class Father { public int money = 1; public Father() { money = 2; showMeTheMoney(); } public void showMeTheMoney() { System.o..

Read more
java

为什么要有hasArray()?

直接贴StackOverflow https://stackoverflow.com/questions/55442531/why-do-we-ever-need-hasarray-method-in-charbuffer 正文: The condition for hasArray is (hb != null) && !isReadOnly isReadOnly changes if you use asReadOnlyBuffer CharBuffer.allocate(20).asReadOnlyBuffer(); for example.So yes, we need it. Take this line final CharBuffer cb = instanc..

Read more
java

effective java阅读1

创建和销毁对象 避免创建不必要的对象。 比如使用正则表达式matche字符串时,可以将其显式编译为一个pattern实例(不可变),当需要比较时,直接重用该实例。 避免使用终结方法和清除方法。 永远也不要依赖终结方法或者清除方法来更新重要的持久状态。因为根本就不保证会被执行。 不要被Sysme.gc和System.runFinalization这两个方法迷惑。理由同上。 使用终结方法和清除方法有一个非常严重的性能损失。因为它会阻止有效的垃圾回收。 终结方法有一个严重的安全问题。(终结方法攻击) 如果确实有资源需要终止,可以使其实现AutoCloseable。一般的终结方法只是充当close的安全网。 try-with-resources优先于try-finally。(在有嵌套try结构时有效避免问题..

Read more
java

effective java阅读2

第三章 对于所有对象都通用的方法 关于equals 覆盖equals时必须要覆盖hashcode:map中先是由hashcode散列确定位置再由equals比较,假如两个一致却没覆盖hashcode便会导致map中存有重复的目标对象。 不要将equals声明中的object对象替换为其他类型 // bad example,这并没有覆盖方法,而是重载 public boolean equals(MyClass o){} // good 以Integer的equals方法为例 public boolean equals(Object obj) { if (obj instanceof Integer) { return val..

Read more