Javaは長年にわたり多くの開発者に愛されてきましたが、近年ではKotlinが注目を集めています。KotlinはJavaの互換性を保ちつつ、より簡潔で直感的なコードを書くことができる言語です。本記事では、Javaと比較しながら、Kotlinの便利な書き方を解説します。
1. 変数宣言の簡略化
Javaでは型を明示的に指定する必要がありますが、Kotlinでは型推論を活用できます。
Javaの例:
String message = "Hello, Java!";
int number = 10;
Kotlinの例:
val message = "Hello, Kotlin!"
val number = 10
val
を使用すると、再代入不可の変数を宣言でき、var
を使用すると再代入可能な変数を宣言できます。
2. Null安全
JavaではNullPointerException
(NPE)が頻繁に発生しますが、Kotlinではコンパイル時にNull安全を確保できます。
Javaの例:
String text = null;
System.out.println(text.length()); // NPE発生
Kotlinの例:
val text: String? = null
println(text?.length) // 安全にnullを処理
?
をつけることで、nullを許容しつつ安全にアクセスできます。
3. データクラスの活用
Javaでデータクラスを定義する場合、多くのボイラープレートコードが必要です。
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; }
}
Javaの例(Lombokを使用):
import lombok.Data;
@Data
public class User {
private String name;
private int age;
}
Lombokの@Data
アノテーションを使うことで、getter
、setter
、toString
、equals
、hashCode
などを自動生成できます。
Kotlinの例:
data class User(val name: String, val age: Int)
Kotlinではdata class
を使うだけで、getter
、setter
、toString
、equals
、hashCode
などが自動生成されます。
4. 拡張関数
Kotlinでは既存のクラスにメソッドを追加する拡張関数が利用できます。
Javaの例:
public class StringUtils {
public static String greet(String name) {
return "Hello, " + name + "!";
}
}
Kotlinの例:
fun String.greet(): String = "Hello, $this!"
val name = "Kotlin"
println(name.greet()) // Hello, Kotlin!
このように、既存のクラスに手軽にメソッドを追加できるのが拡張関数の強みです。
5. 標準ライブラリの活用
Kotlinの標準ライブラリには便利な関数が多数用意されています。
Javaの例(リストのフィルタリング・通常の方法):
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = new ArrayList<>();
for (int number : numbers) {
if (number % 2 == 0) {
evenNumbers.add(number);
}
}
Javaの例(ラムダ式を使用):
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
Kotlinの例:
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
このように、Kotlinでは関数型スタイルを活用し、コードをシンプルに書くことができます。
まとめ
KotlinはJavaと互換性を持ちながら、より簡潔で可読性の高いコードを書くことができます。特に、型推論、Null安全、データクラス、拡張関数、標準ライブラリの活用によって、ボイラープレートを削減し、効率的なコーディングが可能になります。JavaからKotlinへの移行を検討している方は、ぜひこれらの特徴を活かしてみてください。