Kotlin 接口与 Java8 新特性接口详解

 更新时间:2019年06月14日 08:44:02   作者:驻坑大使  
这篇文章主要介绍了Kotlin 接口与 Java8 新特性接口,Kotlin的接口是可以包含属性声明。Kotlin默认的声明是fianl 和public的。 Kotlin里嵌套的类默认并不是内部内,不包含对器外部类的隐式调用。下面我们来一起学习一下吧

前言

在看一本关于高性能编程的时候发现 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 是必不可少的一环。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring依赖注入的三种方式小结

    Spring依赖注入的三种方式小结

    本篇文章主要介绍了Spring依赖注入的三种方式小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java Collection 接口和常用方法综合详解

    Java Collection 接口和常用方法综合详解

    Collection派生出三个子接口,Set代表不可重复的无序集合、List代表可重复的有序集合、Queue是java提供的队列实现,通过它们不断的扩展出很多的集合类,接下来我们详细介绍一下
    2021-11-11
  • Spring将一个的类配置成Bean的方式详解

    Spring将一个的类配置成Bean的方式详解

    这篇文章主要介绍了Spring将一个的类配置成Bean的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • Spring整合TimerTask实现定时任务调度

    Spring整合TimerTask实现定时任务调度

    这篇文章主要介绍了Spring整合TimerTask实现定时任务调度的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • springboot实现rabbitmq消息确认的示例代码

    springboot实现rabbitmq消息确认的示例代码

    RabbitMQ的消息确认有两种, 一种是消息发送确认,第二种是消费接收确认,本文主要介绍了springboot实现rabbitmq消息确认的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • JAVA中常见异常类

    JAVA中常见异常类

    本文主要介绍了JAVA中的常见异常类。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 10个Java解决内存溢出OOM的方法详解

    10个Java解决内存溢出OOM的方法详解

    在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键,不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM),下面我们就来学习一下有哪些解决办法吧
    2024-01-01
  • SpringBoot中整合MyBatis-Plus-Join使用联表查询的实现

    SpringBoot中整合MyBatis-Plus-Join使用联表查询的实现

    本文主要介绍了SpringBoot中整合MyBatis-Plus-Join使用联表查询的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • resubmit渐进式防重复提交框架示例

    resubmit渐进式防重复提交框架示例

    这篇文章主要为大家介绍了resubmit渐进式防重复提交框架示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • IDEA创建方法时如何快速添加注释

    IDEA创建方法时如何快速添加注释

    这篇文章主要介绍了IDEA创建方法时如何快速添加注释问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论