【KotlinとJava】データ型の宣言

KotlinとJava

JavaにはC言語のような構造体がなく、クラスを利用してデータを格納する。Kotlinではデータを扱うための仕組みが用意されている。ここからはしばらくデータ型についての記事となる。じっくり読み進めていってほしい。

Data classes.kt

data class User(val name: String, val id: Int)

fun getUser(): User {
    return User("Alex", 1)
}

fun main(args: Array<String>) {
    val user = getUser()
    println("name = ${user.name}, id = ${user.id}")

    // or

    val (name, id) = getUser()
    println("name = $name, id = $id")

    // or

    println("name = ${getUser().component1()}, id = ${getUser().component2()}")
}

リンク

data class

データを扱う仕組みとはいえ、その実態はクラスであるようだ。

分解宣言も行うことができる。また、componentNを利用して内部の変数にアクセスすることもできる。前回のPairクラスはデータクラスといって差し支えないだろう。

Javaで記述

対比ができるようにJavaでも同じものを記述してみよう。

public class User {  
    private final String name;  
    private final int id;  
  
    private User(String name, int id) {  
        this.name = name;  
        this.id = id;  
    }  
  
    public static User getUser() {  
        return new User("Alex", 1);  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public int getId() {  
        return id;  
    }  
}

public class Exp14 {  
    public static void main(String[] args) {  
        final User user = User.getUser();  
  
        String template = "name = %s, id = %d";  
        System.out.println(String.format(template, user.getName(), user.getId()));  
  
        // or  
  
        final String name = user.getName();  
        final int id = user.getId();  
        System.out.println(String.format(template, name, id));  
  
        // or  
  
        System.out.println(String.format(template, user.getName(), user.getId()));  
  }  
}

上でも触れたとおり、Javaにはデータそのものを格納するものはない。通常のクラスを利用して、Dataの格納を行っている。

コメント

このブログの人気の投稿

【KotlinとJava】分解宣言

wxPythonでのモーダルダイアログ作成

【Delphi Sample】並列プログラミング1