🔰
Javaと比較するKotlin入門
前置き
Android開発でKotlinを使用する前に、まずは基礎知識から勉強します。
元々Java(やGroovy)での開発経験があるのでJavaと比較しながらみていきます。
変数宣言
Kotlinは型推論が強力なので明示的な形指定は不要
JavaはJava10以降でvarが使用できるようになったが、あまり見なかった印象
(あとはRVコメントでfinalを付け忘れるなと言われた記憶)
Java
String message = "Hello"; // 変更可能
final String finalMessage = "Hello"; // 変更不可能
Kotlin
var message = "Hello" // 変更可能
val finalMessage = "Hello" // 変更不可能
Kotlinで型を明示的に指定するとこう
var message: String = "Hello"
関数定義
Kotlinだと関数の省略形式が多数ありそうだったが、
Java
public int add(int a, int b) {
return a + b;
}
public void greet(String name) {
System.out.println("Hello, " + name);
}
Kotlin
fun add(a: Int, b: Int): Int {
return a + b
}
fun greet(name: String) {
println("Hello, $name") // 文字列テンプレート
}
クラス定義
ここは結構差があるところ
JavaだとLombokを使用してgetter/setterを省略したりするところ、
Kotlinだと宣言したプロパティに対するgetter/setterが暗黙的に宣言される。
またクラスの本体がない場合は中括弧も省略可能。
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;
}
}
Kotlin
// コンストラクタ、getter、setterが自動生成される
class Person(
var name: String,
var age: Int
)
// データクラスを使うと equals()、hashCode()、toString() も自動生成
data class DataPerson(
var name: String,
var age: Int
)
アクセス修飾子
Javaとkotlinではデフォルトのアクセス修飾子が異なる
Java
アクセス修飾子 | 概要 |
---|---|
public | すべてのクラスからアクセスできる |
protected | 現在のクラスとサブクラスからアクセスできる |
なし(デフォルト) | 現在のクラスと同じパッケージのクラスからアクセスできる |
private | 現在のクラスからだけアクセスできる |
Kotlin
アクセス修飾子 | 概要 |
---|---|
public(デフォルト) | すべてのクラスからアクセスできる |
private | 同じファイル内か現在のクラスからだけアクセスできる |
protected | 主にクラス内とそのサブクラス内からアクセスできるようにする修飾子 トップレベルの宣言(クラス外部の変数や関数)には使えない |
internal | 同じモジュール内からアクセス可能 |
HelloWorld
JavaとKotlinの比較でよく目にするやつです。
Kotlinはclassの記載を省略してもよく、その場合Kotlinのコンパイラがファイル名に応じたクラス名を自動で作成してくれるようです。
Java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world.");
}
}
Kotlin
fun main() {
println("Hello world")
}
感想
久しぶりにJavaの記法を見て懐かしくなりました。
Kotlinのnull安全性などもっと重要な部分は改めて記事にしたいと思います。
参考
NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion