Czy jest coś takiego jak .NET NotImplementedException
w Javie?
Czy jest coś takiego jak .NET NotImplementedException
w Javie?
Odpowiedzi:
Commons Lang ma to. Lub możesz rzucić UnsupportedOperationException
.
Myślę, że tego java.lang.UnsupportedOperationException
właśnie szukasz.
new UnsupportedOperationException("Not implemented yet")
- szczęśliwy?
Możesz to zrobić sam (właśnie to zrobiłem) - aby nie przejmować się obsługą wyjątków, wystarczy rozszerzyć RuntimeException, twoja klasa mogłaby wyglądać mniej więcej tak:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
Możesz go rozszerzyć, aby odebrał komunikat - ale jeśli użyjesz metody tak jak ja (to znaczy, że dla przypomnienia jest jeszcze coś do zaimplementowania), wtedy zwykle nie ma potrzeby dostarczania dodatkowych komunikatów.
Śmiem twierdzić, że używam tylko tej metody, a ja jestem w trakcie opracowywania systemu, dzięki czemu łatwiej mi nie zgodzić się z tym, które metody są nadal nieprawidłowo wdrażane :)
UnsupportedOperationException
moim zdaniem. Teraz, gdyby tylko Java dodała to do wspólnej biblioteki wyjątków!
Jak wspomniano, JDK nie ma ścisłego dopasowania. Jednak mój zespół czasami korzysta również z takiego wyjątku. Moglibyśmy pójść UnsupportedOperationException
zgodnie z sugestiami innych odpowiedzi, ale wolimy niestandardową klasę wyjątków w naszej bibliotece podstawowej, która wycofała konstruktorów:
public class NotYetImplementedException extends RuntimeException
{
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException()
{
}
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException(String message)
{
super(message);
}
}
Podejście to ma następujące zalety:
NotYetImplementedException
, wiedzą, że wdrożenie zostało zaplanowane i zostało zapomniane lub wciąż trwa, podczas gdy UnsupportedOperationException
mówi (zgodnie z umowami windykacyjnymi ), że coś nigdy nie zostanie wdrożone. Dlatego w nazwie klasy mamy słowo „jeszcze”. IDE może również łatwo wyświetlać strony z połączeniami.import
linii (JDK 9 to naprawił ).Nie, nie ma go i prawdopodobnie go nie ma, ponieważ jest bardzo mało ważnych zastosowań. Myślałem dwa razy przed użyciem. Ponadto, naprawdę jest łatwo stworzyć siebie.
Zapoznaj się z tą dyskusją, dlaczego jest nawet w .NET.
Chyba się UnsupportedOperationException
zbliża, chociaż nie oznacza to, że operacja po prostu nie została zaimplementowana, ale nawet nie jest obsługiwana. Może to oznaczać, że nie jest możliwa poprawna implementacja. Dlaczego operacja nie byłaby obsługiwana? Czy powinno tam być? Może segregacja interfejsu lub podstawienie Liskowa?
Jeśli chodzi o prace w toku, wybrałbym ToBeImplementedException
, ale nigdy nie przyłapałem się na definiowaniu konkretnej metody, a potem pozostawiłem ją na tak długo, aby znalazła się w produkcji i byłby potrzebny taki wyjątek.