今天總結了一下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();