004 方法引用
Posted trekxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了004 方法引用相关的知识,希望对你有一定的参考价值。
一 . 概述
在之前我们每一次使用lambda都是自已创建的,但是有的时候我们可能使用的lambda就是现在已有的方法了.
毕竟lambda就是一个方法的实现.
在jdk8之中定义了方法引用的概念,这可以让我们实现方法的复用,请记住,方法引用仅仅只是lambda的一种简化写法而已,没有什么奇怪的地方.
二 .方法引用
在这里只是介绍两种方法引用,不会去将构造函数引用这些.
[1]静态方法引用
在jdk8之中,定义了四种方法引用,在下面一次介绍这四种方法引用.
静态方法引用 : 类名 :: 静态方法名
例子 :
public static void add() { System.out.println("add method ...."); } @Test public void test3() { //定义一个静态的方法引用 new Thread(LambdaTest :: add) .start(); }
首先我们定义了一个静态方法,然后我们实现了一个线程.
由于我们定义的静态函数和此处需要的lambda的接口形式是一致的,因此我们就可以使用这个静态的方法引用替换前面的lambda的使用.
[2]实例方法引用
public void div() { System.out.println("div ..."); } @Test public void test4() { LambdaTest test = new LambdaTest(); new Thread(test :: div).start(); }
我们定义了一个实例方法,并且创建了一个对象的实例.
我们在我们需要使用lambda的地方传入了一个实例方法的引用.
三 . 总结
我们必须只将方法引用视为lambda的一种简写方式,认清其实只是写法的不同而已.
个人认为,代码怎么容易理解,我们就应该使用哪种方式,比如方法引用有的时候就会非常难以理解.
以上是关于004 方法引用的主要内容,如果未能解决你的问题,请参考以下文章
无法对非静态方法 getAssets() 进行静态引用 - 无法在片段中播放音频
如何在 FragmentPagerAdapter 中添加片段标签以便稍后引用片段?