天天看點

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();
           

繼續閱讀