前言

下面分别以变量声明函数定义空安全关键字,lambda以及Kotlin的特性进行简单记录。记录于此,方便查阅。

正文

变量声明

Kotlin
//可变变量
var : Int = 10
//不变变量
val : String = "Hello"
Java
int varVariable = 10;
final String CONST_VARIABLE = "Hello";

函数定义

Kotlin
fun greet(name: String) {
    println("Hello, $name")
}
fun sum(a: Int, b: Int): Int = a + b
Java
public void greet(String name) {
    System.out.println("Hello, " + name);
}
public int sum(int a, int b) {
    return a + b;
}

空安全

Kotlin
var nonNull: String = "Kotlin"
var nullable: String? = null
val len: Int? = nullable?.length
val actualLength: Int = nullable?.length ?: 0
Java

需使用注解并额外检查

@Nullable String nullable = null;
int len = nullable != null ? nullable.length() : 0;

Kotlin特有特性

数据类

数据类(data class)自动生成常用方法:equals、hashCode、toString、copy 和 componentN。

data class User(val id: Long, var name: String)

Java 等价需手动实现:getter/setter、equals 等。

伴生对象

伴生对象(Companion Object),用于替代 Java 的 static 成员。

class Utils {
    companion object {
        const val VERSION = 1
        fun log(msg: String) = println(msg)
    }
}
Utils.VERSION
Utils.log("Hello")
扩展函数

为已有类型添加新函数,无需继承或修改原代码。

fun String.isBlankOrEmpty(): Boolean {
    return this.isBlank() || this.isEmpty()
}
val s = ""
println(s.isBlankOrEmpty())

Java 无此特性,可通过工具类静态方法实现。

对象声明

声明单例对象,线程安全且简洁。

object Database {
    fun connect() { /*...*/ }
}
Database.connect()

Java 需手动实现单例模式或使用 enum 单例。

关键字

关键字说明Java 等价
fun声明函数方法声明
var可变变量普通变量
val只读变量final 变量
?可空类型@Nullable
when多分支语句switch / if-else
object单例或伴生对象声明单例模式 / static
data数据类POJO需手写
sealed限制子类范围枚举或抽象基类

Lambda表达式

Kotlin
val list = listOf(1, 2, 3, 4, 5)
val evens = list.filter { it % 2 == 0 }
val sumLambda: (Int, Int) -> Int = { a, b -> a + b }
Java

Java 8 Lambda

List<Integer> evens = list.stream()
    .filter(i -> i % 2 == 0)
    .collect(Collectors.toList());
BiFunction<Integer, Integer, Integer> sumLambda = (a, b) -> a + b;

参考文章

来自腾讯元宝和百度AI助手。

相关文章

暂无评论

none
暂无评论...