java – 功能接口的概念
发布时间:2020-12-15 04:39:10 所属栏目:Java 来源:网络整理
导读:当我瞥一眼lambda表达式时,本书触及了一个只有一个抽象方法的功能界面.我的问题涉及该测验问题 /* Which of these interfaces are functional interfaces? */public interface Adder{ int add(int a,int b);}public interface SmartAdder extends Adder{ int
当我瞥一眼lambda表达式时,本书触及了一个只有一个抽象方法的功能界面.我的问题涉及该测验问题
/* Which of these interfaces are functional interfaces? */ public interface Adder{ int add(int a,int b); } public interface SmartAdder extends Adder{ int add(double a,double b); } public interface Nothing{ } 我知道最后一个不是,但我认为第一个和第二个应该是功能接口.但是这本书说第二个不是.为什么?它不会覆盖添加方法吗?所以即使在第二个,是不是只有一个抽象方法? 解决方法
一个简单的方法是尝试定义一个实现SmartAdder的类.编译器会告诉你需要实现add(int,int)和add(double,double).
可以理解的是,您认为add(double,double)会覆盖add(int,int),但它们实际上是单独的方法,并且可能具有完全不相关的实现. 如果SmartAdder定义了add(int,int)的默认实现,它仍然是一个功能接口: public interface SmartAdder extends Adder { int add(double a,double b); default int add(int a,int b) { return add((double)a,(double)b); // this calls the double method instead } } 您可能还遇到过 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |