package com.bingo.frame;
import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
/**
* JDK8修改了编译器允许默认方法和静态方法出现在接口里面
* @author bingo
*/
//接口中默认方法子类可以不用实现(如果需要扩展也可以重写), 方便接口扩展, 不影响子类使用
interface IA {
public abstract void test01();
public default void test02() {
System.out.println("默认方法只能通过子类对象调用");
}
public static void test03() {
System.out.println("静态方法只能通过接口名称调用");
}
}
class A implements IA {
@Override
public void test01() {}
// 也可以实现默认方法
// @Override
// public void test02() {
// IA.super.test02();
// }
}
//函数接口, 配合Lambda表达式使用
@FunctionalInterface
interface IC {
void testC();
}
public class BingoTest {
static void lambda (IC ic) {
ic.testC();
}
public static void main(String[] args) {
new A().test02();
IA.test03();
//a.创建IC接口的匿名实现类
new IC() {
@Override
public void testC() {
System.out.println("new IC().testC()");
}
}.testC();
//b.Lambda表达式
lambda(()->{
System.out.println("()->{...}");
});
//只有一行可以省略大括号{}
lambda(()->System.out.println("()->{...}"));
}
}
JDK8接口中默认方法,静态方法和函数接口
最新推荐文章于 2022-05-18 09:06:51 发布