共计 1139 个字符,预计需要花费 3 分钟才能阅读完成。
package com.itheima.demo01.FunctionalInterface;
/*
函数式接口的使用: 一般可以作为方法的参数和返回值类型
*/
public class Demo {
// 定义一个方法, 参数使用函数式接口 MyFunctionalInterface | |
public static void show(MyFunctionalInterface myInter){myInter.method(); | |
} | |
public static void main(String[] args) { | |
// 调用 show 方法, 方法的参数是一个接口, 所以可以传递接口的实现类对象 | |
show(new MyFunctionalInterfaceImpl()); | |
// 调用 show 方法, 方法的参数是一个接口, 所以我们可以传递接口的匿名内部类 | |
show(new MyFunctionalInterface() { | |
@Override | |
public void method() {System.out.println("使用匿名内部类重写接口中的抽象方法"); | |
} | |
}); | |
// 调用 show 方法, 方法的参数是一个函数式接口, 所以我们可以 Lambda 表达式 | |
show(()->{System.out.println("使用 Lambda 表达式重写接口中的抽象方法"); | |
}); | |
// 简化 Lambda 表达式 | |
show(()-> System.out.println("使用 Lambda 表达式重写接口中的抽象方法")); | |
} |
}
package com.itheima.demo01.FunctionalInterface;
/*
函数式接口: 有且只有一个抽象方法的接口, 称之为函数式接口 | |
当然接口中可以包含其他的方法 (默认, 静态, 私有) | |
@FunctionalInterface 注解 | |
作用: 可以检测接口是否是一个函数式接口 | |
是: 编译成功 | |
否: 编译失败 (接口中没有抽象方法抽象方法的个数多余 1 个) |
*/
@FunctionalInterface
public interface MyFunctionalInterface {
// 定义一个抽象方法 | |
public abstract void method(); |
}
package com.itheima.demo01.FunctionalInterface;
/*
@Override 注解 | |
检查方法是否为重写的方法 | |
是: 编译成功 | |
否: 编译失败 |
*/
public class MyFunctionalInterfaceImpl implements MyFunctionalInterface{
@Override | |
public void method() {} | |
/*@Override | |
public void method2() {}*/ | |
/*@Override | |
public void method3() {}*/ |
}
正文完
发表至: java
2019-08-23