/* * 練習問題12.1 p.249 * 以前の練習問題で作成したLinkedListクラスに対するObjectNotFoundExceptionクラスを作成しなさい。 * リスト中のオブジェクトを探すfindメソッドを追加して、要求されたオブジェクトが含まれるLinkedListオブジェクトを返すか、 * オブジェクトがリスト中に発見されなければその例外をスローするようにしなさい。 * オブジェクトが発見されなかった時に、nullを返すより、例外をスローする方がなぜ好ましいですか。 * なにか付け加えるとしたら、ObjectNotFoundExceptionはどのような追加データを保持すべきですか。 * * answer: なぜ好ましいか:プログラマが例外処理を忘れない、例外発生時のデータを保持できる * answer: 追加すべきデータ:探していたオブジェクトを保持すべき */ /* * 練習問題11.1 p.219 * 練習問題2.2で始めたLinkedListクラスを見直して、ジェネリッククラスとして書き直しなさい。 */ /* * 練習問題2.2 p.37 * LinkedListクラスを作成しなさい。LinkeListクラスは、Object型のフィールドと、リストの中で次のLinkedList要素への参照を持ちます。 */ package ch12.ex12_01; public class LinkedList<E> { E object; LinkedList<E> nextObject; public LinkedList<E> find (E findTarget) throws ObjectNotFoundException { LinkedList<E> temp = this; while (temp != null) { if (findTarget == temp.object) { return temp; } temp = temp.nextObject; } throw new ObjectNotFoundException(findTarget); } /** * @param args */ public static void main(String[] args) { LinkedList<String> testList = new LinkedList<String>(); String test1 = "test1"; String test2 = "test2"; String test3 = "test3"; testList.object = test1; testList.nextObject = new LinkedList<String>(); testList.nextObject.object = test2; try { System.out.println(testList.find(test2)); System.out.println(testList.find(test3)); } catch (ObjectNotFoundException e) { System.out.println("Exception occurs!!"); System.out.println(e); System.out.println(e.findTarget); } } }