界首网站建设,wordpress附件管理,龙岗网站建设公司哪家好,wordpress设置摘要还是显示全文为了支持Java 8中的lambda表达式#xff0c;他们引入了Functional Interfaces。 具有单一抽象方法的接口可以称为功能接口。 Runnable#xff0c;Comparator#xff0c;Cloneable是功能接口的一些示例。 我们可以使用Lambda表达式实现这些功能接口。 例如#xff1a; Th… 为了支持Java 8中的lambda表达式他们引入了Functional Interfaces。 具有单一抽象方法的接口可以称为功能接口。 RunnableComparatorCloneable是功能接口的一些示例。 我们可以使用Lambda表达式实现这些功能接口。 例如 Thread t new Thread(new Runnable(){public void run(){System.out.println(Runnable implemented by using Lambda Expression);}
}); 这是创建线程的旧方法。 由于Runnable具有单一抽象方法我们可以将其视为功能接口并且可以使用如下所示的Lambda表达式。 Thread t new Thread(()-{System.out.println(Runnable implemented by using Lambda Expression);
}); 在这里我们没有传递Runnable对象而是传递了lambda表达式。 声明我们自己的功能接口 我们可以通过限定了S个英格尔一个 bstract M在接口ethod宣布我们自己的功能界面。 public interface FunctionalInterfaceTest{
void display();
}
//Test class to implement above interface
public class FunctionInterfaceTestImpl {public static void main(String[] args){//Old way using anonymous inner classFunctionalInterfaceTest fit new FunctionalInterfaceTest(){public void display(){System.out.println(Display from old way);}};fit.display();//outputs: Display from old way//Using lambda expressionFunctionalInterfaceTest newWay () - {System.out.println(Display from new Lambda Expression);}newWay.display();//outputs : Display from new Lambda Expression}
} 我们可以使用FunctionalInterface注释进行注释以告知编译时错误。 它是可选的 例如 FunctionalInterface
public interface FunctionalInterfaceTest{void display();void anotherDisplay();//shows an error, FunctionalInterface should have only one abstarct method.
}默认方法 功能接口不能具有多个抽象方法但是可以具有多个默认方法。 Java 8中引入了默认方法以添加新方法进行接口而不会干扰已实现的类。 interface DefaultInterfaceTest{void show();default void display(){System.out.println(Default method from interface can have body..!);}
}
public class DefaultInterfaceTestImpl implements DefaultInterfaceTest{public void show(){System.out.println(show method);}//we dont need to provide any implementation to default method.public static void main(String[] args){DefaultInterfaceTest obj new DefaultInterfaceTestImpl();obj.show();//out puts: show methodobj.display();//outputs : Default method from interface can have body..!}
} 默认方法的主要用途是不强制实现类我们可以向接口添加方法。 多重继承 如果两个接口中都存在相同的默认方法并且一个类正在实现该接口则它将引发错误。 //Normal interface with show methodinterface Test{default void show(){System.out.println(show from Test);}}//Another interface with same show methodinterface AnotherTest{default void show(){System.out.println(show from Test);}}//Main class to implement above two interfacesclass Main implements Test, AnotherTest{
//here is an ambiguity which show method has to inherit here
} 此类不会编译因为Test和AnotherTest接口show方法之间存在歧义要解决此问题我们需要将Show方法覆盖到Main Class。 class Main implements Test, AnotherTest{void show(){System.out.println(Main show method);}}翻译自: https://www.javacodegeeks.com/2014/05/java-8-functional-interface-example.html