ユーザ定義型
ユーザ定義の型を定義する
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 から要素を一つずつ取り出し,出力する.
}