首页 > Java > java教程 > 正文

Kotlin 数据类与 Java:两个城市的故事(但其中一个的样板文件要少得多)

Barbara Streisand
发布: 2024-11-04 12:56:29
原创
548 人浏览过

Kotlin Data Classes vs Java: A Tale of Two Cities (But One Has Way Less Boilerplate)

啊,数据类。编程世界中那些不起眼的主力,像勤劳的小蚂蚁一样将数据从一个函数传送到另一个函数。 ?但在 Java 中,创建这些数据载体感觉就像手工构建整个蚁丘。输入 Kotlin,其数据类就像在公园野餐一样轻松。 ?

Java:样板之地(尽管它正在努力改进!)

在 Java 中,创建一个简单的数据类涉及一系列 getter、setter、构造函数、equals()、hashCode() 和 toString() 方法。即使是最有经验的开发人员也足以对着键盘哭泣。 ?

// Java
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;

    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    // ... (equals, hashCode, toString - the horror!)
}
登录后复制

光是看那段代码就让我想躺下。 ?

但是,Java 开发人员不要害怕!该语言在减少样板代码方面取得了一些进展。这里有几个选项可以让您一睹 Kotlin 数据类的优雅:

  • 记录(Java 14 及更高版本): 这些是专门为保存数据而设计的不可变类。编译器自动生成构造函数、getter、equals()、hashCode() 和 toString() 方法。
// Java
record Person(String name, int age) {} 
登录后复制
  • Project Lombok: 这个流行的库使用注释为您生成样板代码。使用@Data注释,您可以以最小的努力获得所有必需的方法。
// Java
import lombok.Data;

@Data
public class Person {
    private String name;
    private int age;
}
登录后复制

虽然这些选项是朝着正确方向迈出的一步,但它们与 Kotlin 数据类的简洁性和功能丰富性不太匹配。

Kotlin:数据类绿洲

Kotlin 以其无限的智慧说:“样板已经够了!”并引入了数据类。使用单个关键字数据,您就可以自动生成所有这些基本方法。这就像魔法,但确实有效。

// Kotlin
data class Person(val name: String, val age: Int)
登录后复制

就是这样!两行代码,您就拥有了一个功能齐全的数据类,其中包含 getter、setter、equals()、hashCode() 和 toString() 一切准备就绪。从这里你几乎可以听到 Java 开发人员的欢呼声。 ?

但是等等,还有更多

Kotlin 数据类还附带一些额外的好处,例如:

  • 默认的不变性:使用 val 作为你的属性,你的数据类就成为一个不可变的堡垒,保护你的数据免受意外修改。 ?️
  • Copy() 函数: 需要创建数据对象的稍微修改版本? copy() 函数使它变得轻而易举。 ?️
  • 解构声明:轻松将数据类的各个组件提取到单独的变量中。这就像打开一个井井有条的手提箱一样。 ?

结论(TL;DR)

Kotlin 数据类为 Java 样板世界带来了一股新鲜空气。它们简洁、高效,并且充满了有用的功能。因此,如果您厌倦了编写无休止的 getter 和 setter,那么是时候拥抱 Kotlin 方式了。你的手指(和你的理智)会感谢你的。 ?

P.S. 如果您是一名仍坚持使用样板的 Java 开发人员,请不要担心。我们会为您留灯。 ?

以上是Kotlin 数据类与 Java:两个城市的故事(但其中一个的样板文件要少得多)的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板