it-swarm.com.de

Gibt es so etwas wie die NotImplementedException von .NET in Java?

Gibt es so etwas wie .NETs NotImplementedException in Java?

519

Commons Lang hat es. Oder Sie könnten ein UnsupportedOperationException werfen.

496
Ravi Wallau

Ich denke der Java.lang.UnsupportedOperationException ist was Sie suchen.

277
Chris Dail

Sie können es selbst machen (so habe ich es gemacht) - um die Ausnahmebehandlung nicht zu stören, erweitern Sie einfach die RuntimeException, Ihre Klasse könnte ungefähr so ​​aussehen:

public class NotImplementedException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public NotImplementedException(){}
}

Sie könnten es erweitern, um eine Nachricht aufzunehmen - aber wenn Sie die Methode wie ich verwenden (das heißt, um Sie daran zu erinnern, dass noch etwas zu implementieren ist), sind in der Regel keine zusätzlichen Nachrichten erforderlich.

Ich wage zu sagen, dass ich nur diese Methode verwende, während ich ein System entwickle, was es mir leichter macht, nicht den Überblick zu verlieren, welche Methoden noch nicht richtig implementiert sind :)

54
Ready4Android

Nein, gibt es nicht und es ist wahrscheinlich nicht da, weil es nur sehr wenige gültige Verwendungen dafür gibt. Ich würde zweimal überlegen, bevor ich es benutze. Auch ist es in der Tat einfach, sich selbst zu erstellen.

Lesen Sie bitte diese Diskussion , warum es überhaupt in .NET ist.

Ich denke, UnsupportedOperationException kommt dem nahe, obwohl es nicht heißt, dass die Operation nicht implementiert ist, sondern sogar nicht unterstützt wird. Das könnte bedeuten, dass keine gültige Implementierung möglich ist. Warum wird die Operation nicht unterstützt? Sollte es überhaupt da sein? Probleme mit Schnittstellentrennung oder Liskov-Substitution?

Wenn es in Arbeit ist, würde ich mich für ToBeImplementedException entscheiden, aber ich habe mich nie dabei ertappt, eine konkrete Methode zu definieren und sie dann so lange zu belassen, bis sie in Produktion geht und es eine solche Ausnahme geben würde .

8
Dormouse

Wie bereits erwähnt, hat das JDK keine enge Übereinstimmung. Mein Team hat jedoch gelegentlich auch eine Verwendung für eine solche Ausnahme. Wir hätten mit UnsupportedOperationException gehen können, wie in anderen Antworten vorgeschlagen, aber wir bevorzugen eine benutzerdefinierte Ausnahmeklasse in unserer Basisbibliothek, die veraltete Konstruktoren hat:

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);
    }
}

Dieser Ansatz bietet die folgenden Vorteile:

  1. Wenn Leser NotYetImplementedException sehen, wissen sie, dass eine Implementierung geplant war und entweder vergessen wurde oder noch läuft, während UnsupportedOperationException dies (in Übereinstimmung mit Inkassoverträge ) angibt etwas wird niemals implementiert. Deshalb haben wir das Wort "noch" im Klassennamen. Auch ein IDE kann die Aufrufstellen leicht auflisten.
  2. Mit der Verfallswarnung an jedem Aufrufstandort kann Sie Ihr IDE und statisches Code-Analysetool daran erinnern, wo Sie noch etwas implementieren müssen Die Abschreibung beschränkt sich nicht auf die Ankündigung der Entfernung .)
  3. Die Konstruktoren sind veraltet, nicht die Klasse. Auf diese Weise erhalten Sie nur innerhalb der zu implementierenden Methode eine Warnung vor Verfall und nicht in der Zeile import (JDK 9 dies wurde behoben ).
6
Jens Bannmann