JDK8怎么实现一个接口

2025-07-17 18:14:56

1、首先我们来举一个接口在实际中应用的案例,例如有一个员工集合,我们想按照员工的年龄或者工资进行筛选,首先想到的是可以用for循环去遍历,然后分别比较每一个员工的具体某一项数据,这样的方式非常不灵活,也不推荐,代码如下,我们创建一个雇员实体类,并且生成该类的有参构造、getter/setter方法、toString()方法等,然后写一个按照年龄过滤雇员的方法,并且在测试方法中调用。若想实现按照工资过滤则又需要另外的方法,因此我们想到了用接口去实现。

JDK8怎么实现一个接口

2、如果我们不仅需要按照年龄过滤员工信息,还想按照工资去过滤员工信息,我们想到了使用接口来实现,在接口中创建一个抽象方法,该方法在接口中没有具体的实现,我们根据需求写不同的类去实现接口进而实现不同的过滤功能。我们创建一个接口MyPredicate,该接口中用到了泛型T,并且这个接口有一个抽象方法test返回boolean类型。@FunctionalInterface注解是用来声明函数式接口的,我们可以先放着,暂时用不上。

JDK8怎么实现一个接口JDK8怎么实现一个接口

4、接口的使用我们还有优化的方法,那就是可以不用创建FilterEmployeeByAge类和FilterEmployeeBySalary类,我们直接使用MyPredicate接口创建匿名内部类即可,这样也节省了类文件。filterEmployee方法同步骤3不需要做任何修改,匿名内部类的写法如下,只需要在调用处修改test方法的实现就可以按照不同的条件进行过滤了,这也是JDK8之前实现接口非常简单的方式。

JDK8怎么实现一个接口

6、JDK8中接口除了抽象方法之外,还有默认方法用default修饰的,静态方法用static修饰的,在以往的JDK版本中是不存在的,这两种方法写法如下图所示。

JDK8怎么实现一个接口

7、接口中的default方法和静态方法有方法体的实现,default方法我们可以使用类去实现接口,静态方法可以直接使用接口名.方法名去调用。我们创建一个SubClass类,实现MyFun, MyInterface这两个接口,在类中重写getName()方法,由于两个接口中有相同的方法,那么在重新的时候我们可以指定使用哪一个方法。在调用时我们使用类中重写的方法,并且使用接口名.方法名去调用接口中的静态方法,代码及执行结果如下图所示。

JDK8怎么实现一个接口JDK8怎么实现一个接口
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢