从 Java 到 Kotlin:你会如何重写这个类?

发布: (2026年2月27日 GMT+8 21:14)
4 分钟阅读
原文: Dev.to

Source: Dev.to

理解此类的作用

在转向 Kotlin 之前,先拆解一下这段 Java 类到底包含了什么:

  • 两个 private 字段codigonome),通过构造函数进行赋值
  • 两个 带默认值的 private 字段numero = 0texto = "EscolaX"

一个 构造函数 接收 codigonome 作为参数,并使用 this 进行赋值。


第一步:类声明

Java

public class AlunoJava { ... }

Kotlin

类默认是 public,因此不需要 public 关键字:

class AlunoKotlin { ... }

✅ 不需要 public —— 从一开始就少了样板代码。


第二步:构造函数

Java 构造函数

public AlunoJava(String codigo, String nome) {
    this.codigo = codigo;
    this.nome = nome;
}

Kotlin 主构造函数(在类头部声明)。在参数前加 valvar 会自动创建字段:

class AlunoKotlin(private val nome: String, private val codigo: String) {
    // nome 和 codigo 已经在这里声明并赋值!
}

✅ 构造函数声明、字段声明以及赋值全部在 一行 完成。


第三步:valvar

  • val不可变(相当于 Java 的 final)——初始化后值不能再被重新赋值。
  • var可变——以后可以修改值。

因为原始 Java 类在构造后不再重新赋值 codigonome,使用 val 更符合原意,也更具 Kotlin 风格。


第四步:带默认值的字段

Java 字段

private int numero = 0;
private String texto = "EscolaX";

Kotlin 等价写法(类型推断会自动生效):

private var numero = 0          // 推断为 Int
private var texto = "EscolaX"   // 推断为 String

✅ 这里使用 var,因为这些字段以后可能会被修改(在 Java 中它们不是 final)。


最终结果

把所有内容组合起来:

class AlunoKotlin(private val nome: String, private val codigo: String) {
    private var numero = 0
    private var texto = "EscolaX"
}

并排对比

Java(17 行)

public class AlunoJava {
    private String codigo;
    private String nome;
    private int numero = 0;
    private String texto = "EscolaX";

    public AlunoJava(String codigo, String nome) {
        this.codigo = codigo;
        this.nome = nome;
    }
}

Kotlin(3 行)

class AlunoKotlin(private val nome: String, private val codigo: String) {
    private var numero = 0
    private var texto = "EscolaX"
}

行为相同。代码量只有原来的几分之一。 🎯


关键要点

Java 概念Kotlin 等价写法
public classclass(默认 public)
单独的构造函数块类头部的主构造函数
this.x = x 赋值构造函数参数中的 val/var
private String xprivate val x: String
类型在名前(String x类型在名后(x: String
final 字段val
可变字段var

结论

Kotlin 旨在消除 Java 的冗余代码,同时保持清晰度。只要熟悉主构造函数语法以及 val/var 的区别,大多数简单的 Java 类都可以自然地转写为 Kotlin —— 并且代码会更短。

0 浏览
Back to Blog

相关文章

阅读更多 »