- 博客(5)
- 收藏
- 关注
原创 Java: 使用双冒号(::)优化lambda
Java 8 最大的改变莫过于lambda表达式,不过你真的了解lambda么?我经常看到同事写类似于如下的代码:forEatch(list,element-> check(element));这种写法无论从代码规范还是编程风格上讲一点问题都没有,不过要从运行效率去考虑,你会发现jvm首先会创建一个函数式接口的实例,这个实例再去调用check方法。虽然创建一个函数式接口实例不会消耗太...
2020-04-21 09:47:39 219
原创 Java:脆弱的基类问题
在Java中,继承是一个非常重要的特性,因此我们常常会定义一个基类再去继承它。但有一个我们一直没有关注的一个问题:对基类进行修改会导致子类不正确的行为,这就是所谓的脆弱的基类问题,因为基类代码的修改不再符合在其子类中的假设。如果基类没有提供子类应该怎么实现的明确规则(哪些方法需要被重写及如何重写),当事人可能会有按基类作者预期之外的方式来重写方法的风险。因为可能分析所有的子类,这种情况下基类是如此...
2020-03-31 06:56:01 294
原创 Java:让你的代码更整洁:函数式接口
Java:让你的代码更整洁:函数式接口许多开发人员认为,好代码的重要标志之一就是减少重复代码,甚至还给这个原则起了个特殊的名字:不要重复你自己(DRY)。但是当你写Java代码的时候,有时候做到这一点就不容易。许多情况下我们把长方法分解成更小的代码块(方法),然后重用这些代码,但是这样可能让代码更费解,因为你以一个包含许多小方法的类告终,而且他们之间并没有明确的关系。可以进一步地将提取的函数组成...
2020-03-30 07:34:58 230
原创 Java:“命名参数”和“默认参数值”
Java:“命名参数”和“默认参数值”函数可读性命名参数默认参数值Java中的“命名参数”和“默认参数值”Builder Pattern函数可读性我们关注下一面例子中的函数可读性。这是一个打印任意集合内容的函数。/*Java的集合都有一个默认的toString实现,但是它格式化输出是固定的,而且往往不是你需要的样子*/public static <T> String joinT...
2020-03-27 08:21:11 3053 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人