java8之接口增强

摘要:
Java 8于2014年3月由Oracle正式发布。它是自Java 5以来最重要的版本。Java8 8的一些重要新功能包括:l接口增强、l方法引用、lLambda表达式、lStream以及一些其他功能,如注释更新和一些新API。以上四个特性将常用于java8 8的开发。然而,在java8中定义接口时,在满足特定要求的前提下,可以有方法的特定实现。这样的接口可以包含属性、抽象方法和特定方法。与java8之前的接口相比,接口的功能变得强大。

Java8是由oracle公司于2014年3月正式发布,它是继java5 以来最重要的发布版本。Java8包含了很多新的特性,可以简化开发,提升代码的可读性。

Java8的一些重要新特性包括:

l接口增强

l方法引用

lLambda表达式

lStream

其中还有一些其他的特性,比如注解的更新,以及一些新的API等。以上四个特性在java8的开发中会比较常用。因为接口增强特性比较独立,而其他三个特性或多或少都有关联关系。这里先记录下接口增强特性的学习笔记。

1.什么是接口增强?

java8以前的版本中,定义一个接口时,所有的方法必须是抽象方法,不能有具体实现,这是java语法规定的。但是在java8中定义一个接口时,在满足特定的前提下,可以有方法的具体实现。这样一个接口中可以有属性,可以有抽象方法,也可以有具体的方法,这跟java8以前的接口比,明显接口的功能变得强大了。

2.接口中如何定义具体的方法实现?

首先,接口中定义具体的方法实现是有限制的,它不能像我们在一个普通类那样随便定义方法实现,它只能定义defaultstatic类型的方法。示例代码如下:

interfaceMyInterface {
    public voidprint();

    //default 和 static 方法的出现为了解决实现该接口的子类代码重复的问题
    default voiddefaultMethod() {
        System.out.println("default method invoked! ");
    }
    
    default int add(int a, intb){
        return a +b;
    }
    
    static voidstaticMethod() {
        System.out.println("static method invoked! ");
    }
    
    static int multiply(int a, intb){
        return a *b;
    }
    
    //...
}
View Code

除了关键字修饰,其他跟普通的方法定义并没有什么不同。

3.如何调用

 1)default方法调用

定义一个类实现该接口,new该类的实例,调用即可。

2)static方法调用

类名.方法名() 调用,这跟以前的静态方法调用方式一样。

示例代码如下:

public classInterfaceTest {
    public static voidmain(String[] args) {
        
        MyInterface msg = newInterfaceImpl();
        msg.print();

        msg.defaultMethod(); //调用default方法
        MyInterface.staticMethod(); //调用static方法
}
}

interfaceMyInterface {
    public voidprint();

    //default 和 static 方法的出现为了解决实现该接口的子类代码重复的问题
    default voiddefaultMethod() {
        System.out.println("default method invoked! ");
    }
    
    default int add(int a, intb){
        return a +b;
    }
    
    static voidstaticMethod() {
        System.out.println("static method invoked! ");
    }
    
    static int multiply(int a, intb){
        return a *b;
    }
    
    //...
}
View Code

4. 应用场景

想象这样一中情况,当多个类实现一个接口的某个方法时,方法的具体实现代码相同,这样就会造成代码重复问题。接口增强就相当于把公共的代码抽离出来,放入接口定义中,这样实现类对于该方法就不用重新定义,直接调用即可,这很好的解决了实现该接口的子类代码重复的问题。

免责声明:文章转载自《java8之接口增强》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java -native 方法TensorflowSharp安装和使用入门下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django中CSS加载background url('')问题

Django中CSS加载background url('')问题 在django中, 默认CSS中如果有 background url('images/a.jpg') 这类的属性,会被django当成URL来解析 这样会造成找不到该文件的问题。 所以为了解决这个问题,首先需要配置setting.py, 配置STATICFILES_DIRS STATIC...

使用Postman轻松实现接口数据关联

Postman是一款非常流行的HTTP(s)接口测试工具,入门简单,界面美观,功能强大。作为一个测试/开发工程师,这是一款必须要会用的工具。今天以一个实际的案例,来介绍下Postman如何处理接口数据关联功能。 首先下载安装Postman 直接打开官网,点击下载按钮即可完成下载 https://www.getpostman.com/downloads/...

Jmeter接口压力测试(先登录再测接口)

Jmeter测试接口(包括登陆操作) 1.      创建HTTP Request先登录 参考: http://blog.csdn.net/ab_2016/article/details/78249686 注意:勾选FollowRedirects 自动重定向Redirect Automatically:HttpClient接收到请求后,如果请求中包含重定...

JDK1.7中关于AutoCloseable接口的使用

1.查看API文档,找到AutoCloseable相关定义 public interface AutoCloseable 该接口是从JDK1.7开始引入,并且该接口中只有一个方法close() 1 void close() throws Exception //关闭此资源,放弃任何潜在资源 2.测试AutoCloseable接口,实现自动关闭处理 2.1新...

网口扫盲一:网卡初步认识

网口扫盲一:网卡初步认识 网络适配器又称网卡或网络接口卡(NIC),英文名Network Interface Card.它是使计算机联网的设备.平常所说的网卡就是将PC机和LAN连接的网络适配器.网卡(NIC) 插在计算机主板插槽中,负责将用户要传递的数据转换为网络上其它设备能够识别的格式,通过网络介质传输.数据在计算机总线中传输是并行方式即数据是肩并肩...

wpa_supplicant

一 函数接口介绍 wpa_ctrl_open接口用来打开wpa_supplicant的控制接口,在UNIX系统里使用UNIX domain sockets,而在Windows里则是使用UDP sockets,当然接口的路径并不是固定的,可以根据配置文件内的路径设置来改变。wpa_ctrl_close接口自然是用于关闭控制接口。wpa_ctrl_reques...