java8新特性(一):default方法的介绍和使用

发表时间:2023-04-13 16:04:40点击:3005

我们都知道在Java的接口中只能定义方法,而不能对方法进行具体实现。其方法的实现必须要到实现了该接口的非抽象子类中实现。

而Java8的一个重要的特性就是引入了函数式方法,其中Collection接口中增加了新的stream()方法。但是因为接口导致的这个语法限制,使得要实现Collection接口的stream()方法全覆盖变得异常困难。难道所有继承了Collection接口的类中都要重写stream()方法的实现吗?显然不是的。机智的Java开发工程师们在Java8中引入了这样一个新的概念——default方法。

简单的说,Java接口拥有了非抽象方法了!default方法是有点就是可以往接口中新增加方法,而不破坏现有的实现架构。

应用举例

首先,我们定义一个接口,里面的方法用default修饰

public interface IOrderService {
    default String getOrderDetail(){
        return "asd";
    }
}

定义一个实现类,实现这个接口。但是因为原接口IOrderService中并没有普通的要实现的方法,所以实现类中并没有需要Override的方法

public class OrderServiceImpl extends OrderInfo implements IOrderService{

    private void getStr(){
        String test = getOrderDetail();
        System.out.println("test="+test);
    }

    public static void main(String[] args) {
        OrderServiceImpl orderService = new OrderServiceImpl();
        orderService.getStr();
    }
}

可以看到,定义一个普通的内部方法getStr(),在里面就可以直接调用接口中的那个default方法getOrderDetail()。然后我们用main方法跑一下,进行验证:

结果就是成功输出了default方法中返回的字符串

test=asd

*原创文章,转载请注明出处