ユーザ定義型
ユーザ定義の型を定義する
Javaでは,自分で型を作成することもできます.
まずは,人の氏名(姓,名)を持つ型 Person を作成してみましょう.
Person型
public class Person{
String givenName;
String familyName;
}
これで,Person型の作成は完了です.Person 型は2つの String
型のフィールド変数
を持っています.givenName(名)とfamilyName(姓)です.
このプログラムだけでは何もできませんので,Person型を利用するプログラムPersonManagerを作成しましょう.
PersonManager型
public class PersonManager{
void run(){
Person person1 =
this.createPerson("Haruaki", "Tamada");
this.printPerson(person1);
}
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);
}
public static void main(String[] args){
PersonManager app = new PersonManager();
app.run();
}
}
以上のプログラムを作成し,実行してみましょう.
なお,Person.javaとPersonManager.javaは同じディレクトリに置いておく必要があります.
例題1 独自型の実体を作成する.
上で作成した PersonManager 型を以下の指示に従って拡張しましょう.PersonManager.java
のrunメソッドに以下の処理を追加してください.
その際,メモリの状態を想像しながらプログラムを書きましょう.
フィールドの参照・代入もメソッド呼び出しと同じように,どの実体のフィールドなのかを
意識して指定してください.Person型のフィールドgivenNameには,上記のperson.givenName = name1
のように,Person型の変数を介してしかアクセスできません.
Person型の変数person2を宣言してください.person2に自分の名前を持つPerson型の実体を作成して,代入してください.person2の情報を画面に出力してください.
PersonManager.javaのコンパイル,実行には,同じディレクトリにPerson.javaを置いておく必要があります.
例題2 実体の代入
次の処理を PersonManager の run メソッドに追加していきましょう.
Person型の変数person3を宣言してください.person3にperson1を代入してください.person3のfamilyNameを全て大文字にしてください.person3.familyName = person3.familyName.toUpperCase();
person1の情報を画面に出力してください.
例題3 独自の型をListに入れる
上で作成したPerson型の実体 person1〜person3をArrayListに入れて出力部分をまとめてみましょう.
ArrayListには,Integer 型以外でもどのような型でも入れられますので,
上記のように,ArrayList にどのような型を入れるのか,入っている型が何かをしっかりと認識しましょう.
ヒント
void run(){
// 今までの処理内容.
// ただし,printPersonの行は全て削除しておく.
ArrayList<何を格納するのか> list = new ArrayList<>();
// listに person1 〜 person3 を追加する.
this.printPersons(list);
}
void printPersons(...){ // <= printPerson を変更する.
// 引数で与えられた list から要素を一つずつ取り出し,出力する.
}