ユーザ定義型

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

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型の変数を介してしかアクセスできません.

別の実体を作成する.

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

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

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

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

独自の型をListに入れる

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

PersonManagerの解答例

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