Kotlin接口与Java8新特性接口的示例分析

网友投稿 204 2024-02-01


Kotlin接口与Java8新特性接口的示例分析

本文讲解"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 是必不可少的一环。

Java编程技术

本文讲解"Spring-boot原理及spring-boot-starter的示例分析",用于解决相关问题。Spring-boot自出现后,到现在火的很,大家貌似 ...


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java如何实现一个接口调取另一个接口
下一篇:Hibernate中有哪些核心接口
相关文章

 发表评论

暂时没有评论,来抢沙发吧~