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