概念
—有且仅有一个抽象方法的接口(接口中可以包括默认,静态,私有方法)
“语法糖”使用简单但是语法不变的
格式:
—只要确保接口中有且只有一个抽象方法即可。
修饰符 interface 接口名称 {
public abstract 返回值类型 方法名称(可选参数**信息); // 其他非抽象方法内容
由于接口当中抽象方法的 public abstract 是可以省略的,所以定义一个函数式接口很简单:
public interface MyFunctionalInterface {
void myMethod();
}
@FunctionalInterface注解
作用:可以检测接口是否是一个函数式接口
是:编译成功
否:编译失败(接口中没有抽象方法或者抽象方法大于一个)
@FunctionalInterface
public interface MyFunctionalInterface {
void Method();
自定义函式接口
//自定义函数式接口
package com.itcast.hssjk;
FunctionalInterface
public interface Functionalinterface {
void aMethod();
}
//定义实现类
package com.itcast.hssjk;
public class FunctionalinterfaceImpl implements Functionalinterface{
@Override
public void aMethod() {
System.out.println("实现类");
}
}
//定义测试类
package com.itcast.hssjk;
//函数式接口的使用:一般作为方法的参数和返回值类型
public class Test {
//自定义一个方法,参数使用函数式接口Functionalinterface fuface
public static void show(Functionalinterface fuface){
fuface.aMethod();
}
public static void main(String[] args) {
//方法一实现类
show(newFunctionalinterfaceImpl());
//方法二匿名内部类
show(new Functionalinterface(){
@Override
public void aMethod() {
System.out.println("匿名内部类");
});
//方法三lambda表达式
show(()->{
System.out.println("lambda表达式");
});
//方法四lambda表达式简化
show(()->System.out.println("lambda表达式简化"));
}
}
package itcast.copytest;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class CopyTest {
public static void main(String[] args) throws IOException {
HashMap<String, String> map = new HashMap<>();
BufferedReader br = new BufferedReader(new FileReader("day10/src/itcast/copytest/出师表.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("day10/src/itcast/copytest/copy.txt"));
String line = null;
while ((line = br.readLine()) != null) {
String[] arr = line.split("\\.");
map.put(arr[0], arr[1]);
}
Set<Map.Entry<String, String>> set = map.entrySet();
for (Map.Entry<String, String> entry : set) {
String key = entry.getKey();
String value = entry.getValue();
bw.write(key+"->"+value);
bw.newLine();
}
br.close();
bw.close();
}
}
|
|