ユーザ定義型

ユーザ定義の型を定義する

Javaでは,自分で型を作成することもできます. まずは,人の氏名(姓,名)を持つ型 Person を作成してみましょう.

Person型

public class Person{
    String givenName;
    String familyName;
}

これで,Person型の作成は完了です.Person 型は2つの String 型のフィールド変数 を持っています.givenName(名)とfamilyName(姓)です.

このプログラムだけでは何もできませんので,Person型を利用するプログラムPersonManagerを作成しましょう.

PersonManager型

public class PersonManager{
  Person createPerson(String name1, String name2){
    Person person = new Person();
    person.givenName = name1;
    person.familyName = name2;
    return person;
  }
  void printPerson(Person person){
    System.out.printf("%s, %s%n", 
        person.familyName, person.givenName);
  }
  void run(){
    Person person1 = 
        this.createPerson("Haruaki", "Tamada");
    this.printPerson(person1);
    // ここに処理を追加する.
  }
  public static void main(String[] args){
    PersonManager app = new PersonManager();
    app.run();
  }
}

以上のプログラムを作成し,実行してみましょう. 作成できれば,次の指示に従って,プログラムを拡張してみましょう. その際,メモリの状態を想像しながらプログラムを書いていってください.

フィールドの参照・代入もメソッド呼び出しと同じように,どの実体のフィールドなのかを 意識して指定してください.Person型のフィールドgivenNameには,上記のperson.givenName = name1 のように,Person型の変数を介してしかアクセスできません.

別の実体を作成する.

では,PersonManager の run メソッドに次の処理を追加してみましょう. 作成できれば,コンパイルして,実行結果を確認してください.

  1. Person 型の変数 person2 を宣言してください.
  2. person2 に自分の名前を持つ Person 型の実体を作成して,代入してください.
  3. person2 の情報を画面に出力してください.

それができれば,次の処理も実行してみましょう.

  1. Person 型の変数 person3 を宣言してください.
  2. person3 に person1 を代入してください.
  3. person3 の familyName を全て大文字にしてください.
    • person3.familyName = person3.familyName.toUpperCase();
  4. person1 の情報を画面に出力してください.
メモリ状態

独自の型をListに入れる

今回作成したPerson型の実体をArrayListに入れてみましょう.

PersonManagerの解答例

ArrayListには,Integer 型以外でもどのような型でも入れられますので, 上記のように,ArrayList にどのような型を入れるのか,入っている型が何かをしっかりと認識しましょう.