Java
吴仙杰
这个作者很懒,什么都没留下…
展开
-
Java中的按值参数传递
开门见山,记住这个结论:在Java中,不论是原始数据类型,还是对象(引用数据类型),它们都是按值传递。import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) { int i = 1; Lis...原创 2019-12-09 19:01:59 · 318 阅读 · 0 评论 -
Java 变量捕获(Captured Variable)
Java 变量捕获(captured variable)引言什么是变量捕获总结引言Java 中的局部类(Local Class,本地类)和匿名类(Anonymous Class)都存在变量捕获(captured variable)。只有理解了什么是变量捕获之后,我们后续才能更好地理解 Lambda 表达式的作用域,因为 Lambda 表达式也存在变量捕获。什么是变量捕获首先,我们知道局部...原创 2019-05-19 14:10:36 · 1863 阅读 · 0 评论 -
Java 变量隐藏(Shadow)
Java 变量隐藏(Shadow)引言什么是变量隐藏总结引言Java 中的局部类(Local Class,本地类)和匿名类(Anonymous Class)都存在变量隐藏(Shadowing)。当我们理解变量隐藏之后,将可以更好地理解 Lambda 表达式作用域,因为 Lambda 表达式没有任何的变量隐藏。什么是变量隐藏要理解什么是变量隐藏,最好的方式就是通过代码去理解,譬如以下代码:...原创 2019-05-20 08:14:57 · 2653 阅读 · 0 评论 -
Java Lambda 表达式(二):作用域
Java Lambda 表达式(二):作用域引言示例代码总结引言正如我们之前在 Java 变量捕获(Captured Variable)和 Java 变量隐藏(Shadow)两篇文章中所说的,局部类和匿名类都存在变量捕获和变量隐藏,而今天我们说到的 Lambda 表达式却有些许不同:Lambda 表达式存在变量捕获,但没有变量隐藏。更进一步说,Lambda 表达式的作用域是词法作用域,这表示...原创 2019-05-21 09:13:37 · 1123 阅读 · 1 评论 -
Java 隐藏特性:双括号初始化(Double Brace Initialization)
Java 隐藏特性:双括号初始化引入双括号初始化理解双括号初始化内部类初始化块(代码块)剖析双括号初始化扩展阅读引入双括号初始化Java 中的“双括号初始化”常被人以隐藏特性的方式所提及,那何谓“双括号初始化”呢?我们又在哪里有应用到“双括号初始化”呢?首先,我们先来观察一段典型的“双括号初始”示例代码片段:Map<String, String> map = new HashM...原创 2019-05-16 16:57:01 · 2694 阅读 · 1 评论 -
Java Lambda 表达式(三):目标类型(Target Type)
Java Lambda 表达式(三):目标类型(Target Type)目标类型示例代码目标类型目标类型(Target Type)目标方法所期望的数据类型。因为 Java 编译器是通过 Lambda 表达式所在上下文或场景的目标类型来确定 Lambda 表达式的类型。故,我们只有在 Java 编译器可以确定目标类型的场景下,才能使用 Lambda 表达式。这样的场景有:变量声明赋...原创 2019-05-22 12:37:11 · 1387 阅读 · 0 评论 -
Java Lambda 表达式(一):入门
Java Lambda 表达式(一):入门为什么要使用 Lambda 表达式使用 Lambda 表达式的前置条件Lambda 表达式的理想用例在局部类中指定搜索条件代码在匿名类中指定搜索条件代码使用 Lambda 表达式指定搜索条件代码将标准函数接口(Predicate)与 Lambda 表达式一起使用将标准函数接口(Consumer)与 Lambda 表达式一起使用将标准函数接口(Functio...原创 2019-05-17 18:04:38 · 690 阅读 · 0 评论 -
Java Lambda 表达式(四):方法引用(Method Reference)
Java Lambda 表达式(四):方法引用(Method Reference)什么是方法引用方法引用的种类引用静态方法引用特定对象的实例方法引用构造函数引用特定类型的任意对象的实例方法什么是方法引用我们已在前面的 Java Lambda 表达式(一):入门一文中说过,可以使用 Lambda 表达式来创建匿名方法。但是,某些情况下,我们的 Lambda 表达式可能仅用来调用现有方法而不做任何...原创 2019-05-23 14:25:58 · 2768 阅读 · 0 评论 -
Java 动态代理:Java Proxy 和 CGLIB
Java 动态代理:Java Proxy 和 CGLIB静态代理JDK 原生动态代理(Java Proxy)CGLIB 动态代理Java Proxy vs CGLIB如果我们想要编写简洁、易维护的 Java 代码,那么掌握动态代理是其中必不可少的一个技术。想必大家都用过 Spring 框架,因此动态代理对于我们来说也不会太陌生。因为 Spring 框架中大量使用了动态代理,比如 Spring ...原创 2019-05-30 17:13:04 · 383 阅读 · 0 评论