Kotlin 之所以通常被认为比 Java 更“简洁”,核心原因是:它在语言层面替你写了很多 Java 需要你手动写的样板代码(boilerplate)。下面从具体特性对比说明。
Java:
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public int getAge() { return age; }
@Override
public boolean equals(Object o) { ... }
@Override
public int hashCode() { ... }
@Override
public String toString() { ... }
}
Kotlin:
data class User(val name: String, val age: Int)
✅ 自动生成:equals / hashCode / toString / copy / componentN
Java:
if (user != null && user.getName() != null) {
System.out.println(user.getName().length());
}
Kotlin:
println(user?.name?.length)
✅ 编译期检查空指针,减少防御性代码
Java:
List<String> list = new ArrayList<>();
Kotlin:
val list = mutableListOf<String>()
或
val list = arrayListOf("a", "b")
Java(Java 8+):
Runnable r = () -> System.out.println("hi");
Kotlin:
val r = { println("hi") }
fun sayHi() = "hi"
✅ 顶层函数、扩展函数无需写类
Java:
public static String capitalize(String s) {
return s.substring(0,1).toUpperCase() + s.substring(1);
}
Kotlin:
fun String.capitalize(): String = this[0].uppercase() + substring(1)
✅ 像是给系统类“加方法”,但零侵入
Java:
switch (x) {
case 1: ...
case 2: ...
default: ...
}
Kotlin:
when (x) {
1 -> ...
2 -> ...
else -> ...
}
✅ 可返回值、可表达式、更灵活
Java:
void connect(String host, int port) { ... }
void connect(String host) {
connect(host, 8080);
}
Kotlin:
fun connect(host: String, port: Int = 8080) {}
connect("localhost")
Java:
private int age;
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
Kotlin:
var age: Int = 0
✅ getter / setter 自动生成,可自定义
Java(线程 / Future / Callback):
executor.submit(() -> { ... });
Kotlin:
launch {
val result = async { fetch() }.await()
}
✅ 同步写法,异步执行
Kotlin 简洁,不是“少写几个字母”,而是用语言特性消灭样板代码、减少出错概率、提升可读性。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。