解析Kotlin接口与Java8新特性接口
- 更新时间:2020-03-13 12:53:24
- 编辑:殳景山
前言
在看一本关于高性能编程的时候发现 Java8 中关于接口的新特性的介绍,这个特性是真的棒,解决了一个接口中有多个方法,但并不想实现该接口的类都去实现所有的方法,简单的说就是在类需要的情况再去重写接口。所以有了以下的特性出现。
接口增强
在 Java8 的中接口特性中增加以下俩种特性:
- 在接口中可以使用 default 关键字修饰默认方法或扩展方法,抽象方法因为其特性的原因无法使用
- 接口可以使用 static 声明为静态方法,可以通过类直接调用Android Studio 中使用 Java8 需要在模块中的 build.gradle 中配置指定的版 Java 版本,当然使用 Kotlin 为开发语言的话需要为 Kotlin 指定 Jvm 版本,因为 Kotlin 使用的是 Jvm 1.6
那么下面就来展示他们的配置方法:
android { defaultConfig { ... kotlinOptions { jvmTarget = '1.8' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
经过以上的配置就可以使用 Java8 的新特性了代码示例:
puclic interface onTest{ void onTestStandardMenthod(); default void onTestDefaultMethond(){ // 默认的逻辑 } static void onTestStaticMenthod(){ // 默认的逻辑 } } public class TestActivity extends AppCompatActivity implements onTest{ @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 通过类名调用的接口 onTest.onTestStaticMenthod(); // 通过对象的形式调用 代码只用来举例说明 new TestActivity.onTestStandardMenthod() new TestActivity.onTestDefaultMethond() } @Override public void onTestStandardMenthod(){} // 必须实现 @Override public void onTestDefaultMethond(){} // 可以选择性实现 }
上面的代码是展示如何使用,如果对具体的细节想了解的更清楚可以查看官方的文档
可能有朋友好奇我为什么先讲 Java,因为 Kotlin 的语法结构和关键字是不一样的虽然实现的思路是一样的,所以先从 Java 开始,另外是近年 Jvm 版本升级很快,基础概念不会改变,但有新的特性是正常的,如果有常看文档的朋友会发现有些方法实现的方式和细节也会发生改变。
接下来开始 Kotlin 的部分,这部分看起来与 Java 8 相似,但实际上并没有使用 Java 8 的特性,但为了好理解一些可以写成类似的思路。
internal interface onTest { fun onTestStandardMenthod() fun onTestDefaultMethond() { // 默认的逻辑 } companion object { fun onTestStaticMenthod() { // 默认的逻辑 } } } class TestActivity : AppCompatActivity , onTest{ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 通过类名调用的接口 onTest.onTestStaticMenthod() // 通过对象的形式调用 代码只用来举例说明 TestActivity.onTestStandardMenthod() TestActivity.onTestDefaultMethond() } // 必须实现 override fun onTestStandardMenthod(){} // 可以选择性实现 override fun onTestDefaultMethond(){ super.onTestDefaultMethond()} }
Kotlin 的接口与 Java 8 类似,既包含抽象方法的声明,也包含实现。与抽象类不同的是,接口无法保存状态。它可以有属性但必须声明为抽象或提供访问器实现,如果对 Kotlin 的接口不明白的的话可以点这里查看更详细的说明。
Kotlin 的接口可以选择是否有方法体,对比之下的话 Java8 需要声明 default 后可以有方法体,静态接口的方法其实在实现概念上是一样的,或许说目前的面向对象万变不离其中吧,根据语言的灵活性结合优秀的思维可以写出更漂亮的代码。
对于 Java8 这让我想到了之前朋友的吐槽 “苹果总是做一些以前就有的功能,然后开发布会来夸大其词,很厉害的样子” 我觉得 Java 就是这样子的,一些本应该随着时代来不断完善的语法或者新的优化,早应该就出了,结果非得在外界的冲击下,才做出改变。看更新的速度,很明显这并不是非常困难的事,这也就诞生了新的语言,世间常态总是如此当现有的工具诟病太多后,就会诞生新的工具,当然 Java 是必不可少的一环。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。
相关教程
-
在centos7下安装和部署java8和mysql
一般学习java和部署项目都是在本地部署,但是生产环境一般都是在linux环境下,部署和安装环境都是在控制台下进行操作的,没有windows的可视化的操作界面,对与linux的命令掌握和操作对小白来
发布时间:2019-06-05
-
详解Java8的groupBy实现集合的分组
这篇文章主要介绍了详解Java8的groupBy实现集合的分组,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
发布时间:2021-05-02
-
JavaScript启示录
《JavaScript启示录》无关于JavaScript设计模式,也无关于JavaScript面向对象代码实现。《JavaScript启示录》意图通过考察原生JavaScript对象和不同环境对原生对象的支持和细微差别。
大小:24.4 MBJS电子书
-
Java性能调优指南
《Java性能调优指南》主要展示了如何在当今先进的多核硬件和复杂的操作系统环境下,系统且主动地提高Java性能,非常具有实用价值,需要的朋友可以参考下
大小:42.6MBJava调优电子书
-
自己动手写Java虚拟机
Java虚拟机非常复杂,要想真正理解它的工作原理,最好的方式就是自己动手编写一个! 本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟
大小:4.27 MBJava电子书
-
基于MVC的Java Web项目实战
这书以网上购物商城网址为背景图,详细介绍1个新项目的总体步骤,总体步骤包括需求分析报告、作用叙述、控制系统设计、MVC、javabean、servlet等,在其中关键详细介绍了MVC在web系统软件中的
大小:2.8 MBJava Web实战电子书
-
软件设计模式:Java版
程细柱编著的《 软件设计模式 》从面向对象程序设计的7个基本原则出发,用浅显易懂、可视化的UML建模语言逐一介绍GoF的23种经典设计模式。全书共9章,内容包括设计模式基础、创建型设计
大小:145 MB软件设计电子书
-
深度解析Java游戏服务器开发
以便协助想掌握新手入门服务器开发设计的从业者或式从业者快速把握Java服务器开发设计的技术性,这书从手机游戏的行业现状、Java技术性、手机游戏逻辑性、数据库系统、网络理论、服务器
大小:314.4 MBJava开发电子书
-
实战Java高并发程序设计
并发和多线程经典图书升级版,详解Java高并发程序设计基础、思路、方法和实战,技术提升走向高级工程师必备。
大小:104.1 MBJava电子书
-
JavaScript基础教程
本书是经典的JavaScript入门书,以易学便查、图文并茂、循序渐进和善于用常见任务讲解语言知识而著称。书中从JavaScript语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式
大小:14 MBJS教程电子书