2013-03-11 11 views
6

więc jeden z opisów metody jest następujący:rzuca UnsupportedOperationException

publicznego BasicLinkedList addToFront (T danych) Ta operacja jest nieprawidłowy na liście sortowane. Wyjątek UnsupportedOperationException zostanie wygenerowany przy użyciu komunikatu "Nieprawidłowa operacja dla posortowanej listy".

Mój kod wychodzi coś takiego:

public BasicLinkedList<T> addToFront(T data) { 
    try { 
     throw new UnsupportedOperationException("Invalid operation for sorted list."); 
    } catch (java.lang.UnsupportedOperationException e) { 
     System.out.println("Invalid operation for sorted list."); 
    } 
    return this; 
} 

Czy to jest właściwy sposób to zrobić? Właśnie wydrukowałem wiadomość przy użyciu println(), ale czy istnieje inny sposób generowania wiadomości?

+1

Lepiej używać System.out.println (e.getMessage ()); w ramach połowu. – Java42

+0

Rzucasz wyjątek i łapiesz go w Catch Block! Nie łapiesz tego. –

Odpowiedz

14

Nie chcesz złapać wyjątek w swojej metodzie - chodzi o to, aby pozwolić rozmówcy wiedzą, że operacja nie jest obsługiwana:

public BasicLinkedList<T> addToFront(T data) { 
    throw new UnsupportedOperationException("Invalid operation for sorted list."); 
} 
+0

Ale to wyrzuciłoby go dla wszelkich przychodzących danych. Musisz wyróżnić dane typu SortedList (spójrz na moją odpowiedź). – DigCamara

+0

Ok, czytając komentarz CoderNinja, czy to SortedLinkedList jest podklasą BasicLinkedList? Jeśli tak, to metoda overriden w SortedLinkedList powinna rzucić wyjątek. Nie ma to nic wspólnego z typem T. – Jason

+0

Masz rację. Zmieniłem swoją odpowiedź, aby odzwierciedlić komentarz. – DigCamara

2

Można przepisać kod tak być

public BasicLinkedList<T> addToFront(T data) throws UnsupportedOperationException { 
    if (this instanceof SortedList) { 
     throw new UnsupportedOperationException("Invalid operation for sorted list."); 
    }else{ 
     return this; 
    } 
} 

że w zasadzie zezwoli na osiągnięcie co pytasz.

+0

Pomysł polega na tym, że mam klasę basicLinkedList, która ma metodę addToFront, ale w mojej klasie sortedLinkedList metoda add dodaje węzeł do odpowiedniej pozycji na podstawie sortowania. Tak więc addToFront nie może być wywołany, ponieważ może to uszkodzić sortowaną listę. Co do tego, co chcę osiągnąć, jest jedynie zależne od tego, o co pyta. Nie jestem pewien, jak powinienem generować wiadomość (przez println? Lub przez sam wyjątek, jak wtedy, gdy dostajesz te wszystkie czerwone bzdury). – CoderNinja

+0

Przepraszamy. Nie przeczytałem poprawnie twojego pytania za pierwszym razem. – DigCamara

Powiązane problemy