天天看点

java 8中 Consumer、Function、Predicate、Supplier接口的冒号使用详解

今天总结了一下java8中出现的几个新接口的使用方法,晚上又请教了一下艾哥,非常感谢他的教导,才能有机会写这篇文章。      

话不多说直接上代码实例。

class TestClass{

    public void aaa(String aa){}

    public void aaa1(){return;}

    public String bbb1() {return "";}

    public String bbb(String a){return"";}

    public boolean ccc() {return true;}

    public Boolean ccc1(String aa) {return true;}

    public String ddd() {return "";}
}
           

Consumer的冒号的使用

TestClass testClass=new TestClass();
           

例1

Consumer<String> consumer=testClass::aaa;
consumer.accept("111");
           
public void aaa(String aa){}
           

解释:小写调用::和大写调用含义是不一样的

 小写调用是将accept中的实参当做调用方法的入参传进入,Consumer的泛型要与调用方法的入参保持一致,否则会报错。

上面方法相当于这个形式。testClass.aaa("111");

例2

Consumer<TestClass> consumer1=TestClass::aaa1;
consumer1.accept(new TestClass());
           
public void aaa1(){return;}
           

大写调用是将accept中的实参去调用冒号后的方法,是调用,Consumer的泛型要与类保持一致。

上面方法相当于这个方法。new TestClass().aaa1();

其他几个接口的用法大致一致,含义大致相同,下面贴出代码,请自行写例子。

Function      
例3      
Function<String,String> function=testClass::bbb;
function.apply("222");
           
public String bbb(String a){return "";}
           
testClass.bbb("222")
           

 例4

Function<TestClass,String> function1=TestClass::bbb1;
function1.apply(new TestClass());
           
public String bbb1() { return "";}
           
new TestClass().bbb1();
           
Predicate      
例5      
Predicate<TestClass> predicate=TestClass::ccc;
predicate.test(new TestClass());
           
public boolean ccc() {return true;}
           
new TestClass().ccc();
           

    例6

Predicate<String> predicate1=testClass::ccc1;
predicate1.test("333");
           
public Boolean ccc1(String aa) { return true;}
           
testClass.ccc1("333");
           
Supplier      
例7      
这种方法是不能被调用的,理由自己想      
Supplier<TestClass> supplier=TestClass::XXX;      

例8

Supplier<String> supplier1=testClass::ddd;
supplier.get();
           
public String ddd() {return "";}
           
testClass.ddd();
           

继续阅读