Benutzervorgaben für Java-Kompilierungsfehler/-warnungen

Geben Sie Ihre Benutzervorgaben für die Fehler-/Warnungseinstellungen auf der Benutzervorgabenseite Benutzervorgabenseite für Fehler/Warnungen öffnen Java > Compiler > Fehler/Warnungen an.

Codedarstellung

Option

Beschreibung

Standardwert

Nicht statischer Zugriff auf statisches Member

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn in einem Ausdrucksempfänger auf ein statisches Feld oder eine Methode zugegriffen wird. Ein Verweis auf ein statisches Member sollte durch einen Typnamen qualifiziert werden.

Warnung

Indirekter Zugriff auf statisches Member

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn indirekt auf ein statisches Feld oder eine Methode zugegriffen wird. Ein statisches Feld einer Schnittstelle ist mit einem deklarierenden Typnamen zu qualifizieren.

Ignorieren

Unqualifizierter Zugriff auf Instanzfeld

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn er einen nicht qualifizierten Zugriff auf ein Feld feststellt (z. B. wenn 'this' fehlt).

Ignorieren

Zugriff auf ein nicht zugriffsfähiges Member eines einschließenden Typs

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn er den Zugriff auf ein nicht zugriffsfähiges Member eines einschließenden Typs emuliert. Solche Zugriffe können Auswirkungen auf die Leistung beinhalten.

Ignorieren

Parameterzuordnung

Das Zuordnen eines Werts zu einem Parameter wird allgemein als schlechter Programmierstil angesehen. Wenn diese Option aktiviert ist, signalisiert der Compiler ein solches Szenario entweder als Fehler oder als Warnung.

Ignorieren

Nicht ausgelagerte Zeichenfolgen

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung für nicht ausgelagertes Zeichenfolgeliteral aus (d. h. nicht mit dem Tag //$NON-NLS-<n>$ versehen) oder für nicht ausgelagerte Zeichenfolgetags, die keiner Zeichenfolge angehören.

Ignorieren

Nicht dokumentierter leerer Block

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn die Anweisung eines leeren Blocks ohne erklärenden Kommentar gefunden wird.

Ignorieren

Die Ressource wird nicht mit try-with-resource verwaltet (1.7 oder höher)

Wenn diese Option aktiviert ist, dann gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine lokale Variable einen Wert vom Typ 'java.lang.AutoCloseable' enthält und wenn die Methode 'close()' explizit für diese Ressource aufgerufen wird, die Ressource jedoch nicht mit einem try-with-resource-Block verwaltet wird.

Ignorieren

Methode mit einem Konstruktornamen

Das Benennen einer Methode mit einem Konstruktornamen wird allgemein als schlechter Programmierstil betrachtet. Wenn diese Option aktiviert ist, signalisiert der Compiler ein solches Szenario entweder als Fehler oder als Warnung.

Warnung

Methode darf statisch sein

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung für Methoden aus, die privat oder 'final' sind und nur auf statische Member verweisen.

Ignorieren

Methode darf potenziell statisch sein

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung für Methoden aus, die nicht privat oder 'final' sind und nur auf statische Member verweisen. Beachten Sie, dass Methoden in einer Unterklasse überschrieben werden können. Wenn Sie also eine "potenziell statische" Methode als statisch definieren, kann dies vorhandene Clients außer Funktion setzen.

Ignorieren

Potenzielle Programmierungsprobleme

Identische Werte ('x == x') werden verglichen

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn ein Vergleich identische Operanden (zum Beispiel 'x == x') einbezieht.

Warnung

Zuordnung ist wirkungslos (z. B. 'x = x')

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine Zuordnung keine Auswirkung hat (z. B. "x = x").

Warnung

Mögliche zufällige boolesche Zuordnung (z. B. 'if (a = b)')

Wenn diese Option aktiviert ist, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn er eine mögliche zufällige boolesche Zuordnung feststellt (z. B. 'if (a = b)').

Ignorieren

Konvertierungen ('boxing' und 'unboxing')

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn Konvertierungen ('boxing' und 'unboxing') gefunden werden. 'Autoboxing' kann die Leistung nachteilig beeinflussen.

Ignorieren

Verwendung eines Zeichenbereichs in Verkettung von Zeichenfolgen

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn in Verkettungen von Zeichenfolgen ein Ausdruck 'char[]' verwendet wird.

"hello" + new char[]{'w','o','r','l','d'}

Warnung

Ungenaue Typübereinstimmung für Vararg-Argumente

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine ungenaue Typübereinstimmung für Vararg-Argumente gefunden wird.

Warnung

Leere Anweisung

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine leere Anweisung gefunden wird (z. B. ein nicht erforderliches Semikolon).

Ignorieren

Nicht verwendete Objektzuordnung

Wenn diese Option aktiviert ist, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn er ein zugeordnetes Objekt feststellt, das nicht verwendet wird. Beispiel:

if (name == null)
   new IllegalArgumentException();

Ignorieren

Unvollständige switch-case-Anweisungen für enum

Ist diese Option aktiviert, dann gibt der Compiler einen Fehler oder eine Warnung aus, wenn er eine switch-Anweisung feststellt, die nicht für jede Aufzählungskonstante der Aufzählung, auf die verwiesen wird, case-Anweisungen enthält und die über keine case-Standardanweisung verfügt. Eine case-Standardanweisung deckt Fälle ab, in denen eine case-Anweisung für eine Aufzählungskonstante fehlt, sodass der Compiler keine Meldungen ausgibt, wenn case-Standardanweisungen vorhanden sind, es sei denn, die Option "Signal auch wenn case-Standardanweisung vorhanden ist" (siehe unten) wurde aktiviert.

Warnung

Signal auch wenn case-Standardanweisung vorhanden ist

Ist diese Option aktiviert, dann gibt der Compiler zusätzlich einen Fehler oder eine Warnung aus, wenn die Aufzählungskonstante nicht durch eine case-Anweisung abgedeckt ist, auch wenn eine case-Standardanweisung vorhanden ist. Diese Option ist hilfreich zum Abfangen fehlender case-Anweisungen, wenn eine neue Aufzählungskonstante hinzugefügt wird.

Inaktiviert

Für 'switch' fehlt die case-Standardanweisung

Ist diese Option aktiviert, dann gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine switch-Anweisung nicht über eine case-Standardanweisung verfügt. Folglich wird eine Markierung für eine fehlende case-Standardanweisung auch dann durchgeführt, wenn alle möglichen Werte ansonsten durch case-Anweisungen abgedeckt sind. Diese Warnung wird durch die Java-Sprachspezifikation zur Wahrung der Binärkompatibilität empfohlen.

Ignorieren

case in switch-Anweisung ausgelassen

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine case-Anweisung durch einen Fallthrough einer vorherigen, nicht leeren case-Anweisung eingegeben werden könnte.

Ignorieren

Verdeckter catch-Block

Bei einer lokalen try-Anweisung können einige catch-Blöcke möglicherweise andere verdecken, z. B.:

try { throw new java.io.CharConversionException();
} catch (java.io.CharConversionException e) {
} catch (java.io.IOException e) {}

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung für verdeckte catch-Blöcke entsprechend den überprüften Ausnahmebedingungen aus.

Warnung

Der 'finally'-Block wird nicht normal beendet.

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine 'finally'-Anweisung nicht normal beendet wird (z. B. eine return-Anweisung enthält).

Warnung

Inaktiver Code (z. B. 'if (false)')

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn er inaktiven Code (z. B. 'if (false)') feststellt.

Warnung

Ressourcenleck

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine lokale Variable einen Wert des Typs 'java.lang.AutoCloseable' (Kompatibilität >= 1.7) oder einen Wert des Typs 'java.io.Closeable' (Kompatibilität <= 1.6) enthält und wenn die Ablaufanalyse zeigt, dass die Methode close() für diesen Wert nicht lokal aufgerufen wird.

Warnung

Mögliches Ressourcenleck

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine lokale Variable einen Wert des Typs 'java.lang.AutoCloseable' (Kompatibilität >= 1.7) oder einen Wert des Typs 'java.io.Closeable' (Kompatibilität <= 1.6) enthält und wenn die Ablaufanalyse zeigt, dass die Methode close() für diesen Wert nicht für alle Ausführungspfade lokal aufgerufen wird.

Ignorieren

Serialisierbare Klasse ohne serialVersionUID

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn ein 'java.io.Serializable' implementierender Typ kein 'serialVersionUID'-Feld enthält.

Warnung

Fehlender synchronisierter Änderungswert in übernommener Methode

Wenn diese Option aktiviert ist, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn er eine übernommene Methode feststellt, in der der synchronisierte Änderungswert fehlt.

Ignorieren

Klasse überschreibt 'equals()', aber nicht 'hashCode()'

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn er eine Klasse feststellt, die 'equals()', aber nicht 'hashCode()' überschreibt.

Ignorieren

Namensspiegelung und Konflikte

Eine Felddeklaration verdeckt ein anderes Feld oder eine Variable.

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine Felddeklaration ein anderes übernommenes Feld verdeckt.

Ignorieren

Eine lokale Variablendeklaration verdeckt ein anderes Feld oder eine andere Variable.

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine lokale Variablendeklaration ein anderes Feld oder eine Variable verdeckt.

Ignorieren

Parameter für Konstruktor oder Setter-Methode einschließen

Ist diese Option aktiviert, gibt der Compiler zusätzlich einen Fehler oder eine Warnung aus, wenn ein Konstruktor oder eine Setter-Methode ein anderes Feld oder eine Variable verdecken.

Inaktiviert

Ein Typparameter verdeckt einen anderen Typ.

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn z. B. ein Typparameter einer untergeordneten Klasse einen äußeren Typ verdeckt.

Warnung

Methode überschreibt keine sichtbare Methode des Pakets

Eine Standardmethode eines Pakets ist in einem anderen Paket nicht sichtbar und kann deshalb nicht überschrieben werden. Wenn diese Option aktiviert ist, signalisiert der Compiler ein solches Szenario entweder als Fehler oder als Warnung.

Warnung

Konflikte zwischen Schnittstellenmethode und geschützter Methode 'Object'

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine Schnittstelle eine Methode definiert, die mit der Methode eines nicht übernommenen Objekts nicht kompatibel ist. Solange dieser Konflikt nicht aufgelöst ist, kann eine solche Schnittstelle nicht implementiert werden, z. B.

interface I {
   int clone();
}

Warnung

Veraltete und eingeschränkte API

Veraltete API

Ist diese Option aktiviert, signalisiert der Compiler die Verwendung von herabgestufter API entweder als Fehler oder als Warnung.

Warnung

Verwendung von herabgestufter API in veraltetem Code melden

Ist diese Option aktiviert, signalisiert der Compiler die Verwendung einer herabgestuften API innerhalb von veraltetem Code. Die Wertigkeit des Fehlers wird mit der Option 'Herabgestufte API' gesteuert.

Inaktiviert

Überschreibende oder implementierende veraltete Methode melden

Ist diese Option aktiviert, meldet der Compiler das Überschreiben oder Implementieren einer veralteten Methode. Die Wertigkeit des Fehlers wird mit der Option 'Herabgestufte API' gesteuert.

Inaktiviert

Nicht zulässiger Verweis (Zugriffsregeln)

Ist diese Option aktiviert, meldet der Compiler einen nicht zulässigen Verweis, der in den Zugriffsregeln angegeben ist.

Fehler

Nicht empfohlener Verweis (Zugriffsregeln)

Ist diese Option aktiviert, meldet der Compiler einen nicht empfohlenen Verweis, der in den Zugriffsregeln angegeben ist.

Warnung

Nicht erforderlicher Code

Wert der lokalen Variable wird nicht verwendet

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine lokale Variable deklariert ist, ihr Wert jedoch nie innerhalb ihres Geltungsbereichs verwendet wird.

Warnung

Wert des Parameters wird nicht verwendet

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn ein Parameter deklariert ist, sein Wert jedoch nie innerhalb seines Geltungsbereichs verwendet wird.

Ignorieren

In überschreibenden und implementierenden Methoden ignorieren

Ist diese Option aktiviert, gibt der Compiler keinen Fehler oder keine Warnung aus, wenn ein Parameter deklariert ist, jedoch in überschreibenden oder implementierenden Methoden nie innerhalb seines Geltungsbereichs verwendet wird.

Aktiviert

Parameter ignorieren, die mit dem Tag '@param' dokumentiert sind

Wenn diese Option aktiviert ist, gibt der Compiler keinen Fehler und keine Warnung aus, wenn ein ungelesener Parameter mit einem Tag '@param' dokumentiert wird.

Aktiviert

Nicht verwendeter Import

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung für nicht verwendete Importverweise aus.

Warnung

Nicht verwendetes privates Member

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn ein privates Member deklariert ist, in derselben Einheit jedoch nie verwendet wird.

Warnung

Nicht erforderliche Anweisung 'else'

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine nicht erforderliche 'else'-Anweisung gefunden wird (z. B. if (Bedingung) return; else doSomething();).

Ignorieren

Nicht erforderliche Umsetzung von Operation 'instanceof'

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine nicht erforderliche cast- oder 'instanceof'-Operation gefunden wird (z. B. if (object instanceof Object) return;).

Ignorieren

Nicht erforderliche Deklaration von ausgelöster Ausnahmebedingung

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine nicht erforderliche Deklaration einer ausgelösten Ausnahmebedingung gefunden wird.

Ignorieren

In überschreibenden und implementierenden Methoden ignorieren

Ist diese Option aktiviert, gibt der Compiler keinen Fehler oder keine Warnung aus, wenn eine nicht erforderliche Deklaration einer Ausnahmebedingung in einer Methode gefunden wird, die einer andere Methode überschreibt oder implementiert.

Aktiviert

Ausnahmen ignorieren, die mit den Tags '@throws' oder '@exception' dokumentiert sind.

Ist diese Option aktiviert, gibt der Compiler keinen Fehler oder keine Warnung aus, wenn eine nicht erforderliche Deklaration einer ausgelösten Ausnahmebedingung mit einem Tag '@throws' oder '@exception' dokumentiert wird.

Aktiviert

'Exception' und 'Throwable' ignorieren

Ist diese Option aktiviert, gibt der Compiler keinen Fehler oder keine Warnung aus, wenn eine nicht erforderliche Deklaration einer Ausnahmebedingung oder eines Throwables gefunden wird.

Aktiviert

Nicht verwendete Bezeichnung 'break' oder 'continue'

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine nicht verwendete Bezeichnung 'break' (Unterbrechung) oder 'continue' (Fortsetzung) festgestellt wird.

Warnung

Redundante Superschnittstelle

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn er einen Typ feststellt, der explizit eine Schnittstelle implementiert, die bereits durch einen seiner Supertypen implementiert worden ist.

Ignorieren

Generische Typen

Nicht überprüfte generische Typoperation

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine nicht überprüfte generische Typoperation gefunden wird.

Warnung

Verwendung eines unformatierten Typs

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn er eine Verwendung eines unformatierten Typs (z. B. 'List' anstatt 'List<String>') feststellt.

Warnung

Generischer, mit finaler Typenbindung deklarierter Typparameter

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn ein generischer, mit finaler Typenbindung deklarierter Typparameter gefunden wird.

Warnung

Unvermeidbare generische Typprobleme ignorieren

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn er ein generisches Typproblem erkennt, das vom Programmierer nicht hätte vermieden werden können. Zum Beispiel könnte ein Typ zwangsweise unformatierte Typen in seinen Methodensignaturen und Rückgabetypen verwenden müssen, weil die Methoden, die er von einem Supertyp überschreibt, mit unformatierten Typen an erster Stelle deklariert sind.

Wenn die unformatierten APIs, auf die verwiesen wird, als generisch definiert werden, besteht kein Problem mehr (wenn die generischen Typen korrekt sind) oder es treten Kompilierungsfehler auf (wenn die API auf andere Weise als generisch definiert wurde).

Inaktiviert

Anmerkungen

Anmerkung des Typs '@Override' fehlt

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn er eine Methode feststellt, die eine andere implementierte Methode überschreibt, und die Anmerkung des Typs '@Override' fehlt.

Ignorieren

Implementierungen von Schnittstellenmethoden einschließen (1.6 oder höher)

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung auch dann aus, wenn er eine Methode feststellt, die eine andere in einer Schnittstelle deklarierte Methode überschreibt oder implementiert, und die Anmerkung des Typs '@Override' fehlt.
Bitte beachten Sie, dass '@Override' nur dann in solchen Methoden zulässig ist, wenn es sich um einen Compiler mit der Compiler-Konformitätsstufe 1.6 oder höher handelt. Dies bedeutet, dass dieser Fehler bzw. diese Warnung bei Code der Stufe 1.5 in keinem Fall angezeigt wird.

Aktiviert

Anmerkung des Typs '@Deprecated' fehlt

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn er einen veralteten Typ ohne die zusätzliche Anmerkung des Typs '@Deprecated' feststellt.

Ignorieren

Anmerkung wird als Superschnittstelle verwendet

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn er einen Typ feststellt, der eine Anmerkung implementiert. Obwohl möglich, wird dies als schlechte Praktik betrachtet.

Warnung

Nicht verarbeitetes Token in '@SuppressWarnings'

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn ein unbekanntes Token in einer Anmerkung des Typs '@SuppressWarnings' gefunden wird.

Warnung

Anmerkungen des Typs '@SuppressWarnings' aktivieren

Ist diese Option aktiviert, verarbeitet der Compiler Anmerkungen des Typs '@SuppressWarnings'. Wenn diese Option inaktiviert ist, reagiert das System so, als ob alle Anmerkungen vom Typ '@SuppressWarnings' entfernt worden wären.

Aktiviert

Nicht verwendetes Token '@SuppressWarnings'

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn ein nicht verwendetes Token in einer Anmerkung des Typs '@SuppressWarnings' gefunden wird.

Warnung

Optionale Fehler mit '@SuppressWarnings' unterdrücken

Ist diese Option aktiviert, unterdrückt die Anmerkung '@SuppressWarnings' auch die optionalen Kompilierungsfehler, z. B. Optionen, die hier auf "Error" gesetzt wurden. Obligatorische Kompilierungsfehler können nicht unterdrückt werden.

Inaktiviert

Nullanalyse

Nullzeigerzugriff

Wenn diese Option aktiviert ist, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn festgestellt wird, dass eine lokale Variable, die mit Bestimmtheit den Wert Null hat, dereferenziert wird. Beachten Sie, dass die Analyse nicht alle Nullzeigerzugriffe findet (siehe Möglicher Nullzeigerzugriff).

Warnung

Möglicher Nullzeigerzugriff

Ist diese Option aktiviert, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn festgestellt wird, dass eine lokale Variable, die den Wert Null haben kann dereferenziert wird. Dabei ist zu beachten, dass die Analyse eher konservativ ist, d. h. sie berücksichtigt nur Fälle, die einen begründeten Verdacht zulassen.

Die Qualität der Analyse kann verbessert werden, indem Nullanmerkungen verwendet werden, die mithilfe der Option Anmerkungsbasierte Nullanalyse aktivieren aktiviert werden können.

Ignorieren

Prüfung auf redundante Null

Wenn diese Option aktiviert ist, gibt der Compiler immer dann einen Fehler oder eine Warnung aus, wenn eine lokale Variable, die nicht Null sein kann, auf einen Nullwert geprüft wird.

Ignorieren

'assert' in Nullanalyse einschließen

Ist diese Option aktiviert, berücksichtigt der Compiler die Anweisung 'assert' bei der Ausführung einer Nullanalyse.

Inaktiviert

Anmerkungsbasierte Nullanalyse aktivieren

Ist diese Option aktiviert, interpretiert der Compiler die Anmerkungen vom Typ @Nullable, @NonNull und @NonNullByDefault so, dass diese angeben, ob ein bestimmter Typ den Wert 'null' enthält.

Die Auswirkungen dieser Analysen werden weitergehend durch die folgenden Unteroptionen gesteuert.

Siehe auch Nullanmerkungen verwenden.

Inaktiviert

Verstoß gegen Nullspezifikation

Abhängig von dieser Option gibt der Compiler entweder einen Fehler oder eine Warnung aus, wenn eine der folgenden Situationen festgestellt wird:

  1. Eine mit einer Nicht-Nullanmerkung deklarierte Methode gibt einen nullfähigen Ausdruck zurück.
  2. Ein nullfähiger Ausdruck wird als Argument in einem Methodenaufruf übergeben, bei dem der entsprechende Parameter der aufgerufenen Methode mit einer Nicht-Nullanmerkung deklariert ist.
  3. Ein nullfähiger Ausdruck wird einer lokalen Variablen zugeordnet, die mit einer Nicht-Nullanmerkung deklariert wurde.
  4. Eine Methode, die eine übernommene Methode überschreibt, die mit einer Nicht-Nullanmerkung deklariert ist, versucht, diesen Vertrag weniger restriktiv zu gestalten, indem eine nullfähige Anmerkung angegeben wird (Verbot einer kontravarianten Rückgabe).
  5. Eine Methode, die eine übernommene Methode überschreibt, die eine nullfähige Deklaration für mindestens einen Parameter umfasst, versucht diesen Nullvertrag restriktiver zu gestalten, indem eine Nicht-Nullanmerkung für den zugehörigen Parameter angegeben wird (Verbot kovarianter Parameter).

Im obigen Fall wird ein Ausdruck als nullfähig betrachtet, wenn entweder statisch anerkannt ist, dass er mit dem Wert null ausgewertet wird, oder wenn er mit einer nullfähigen Anmerkung deklariert ist.

Fehler

Konflikt zwischen Nullanmerkungen und Nullinferenz

Abhängig von dieser Option gibt der Compiler entweder einen Fehler oder eine Warnung aus, wenn eine der folgenden Situationen festgestellt wird:

  1. Eine Methode, die mit einer Nicht-Nullanmerkung deklariert ist, gibt einen Ausdruck zurück, von dem statisch bekannt ist, dass er in bestimmten Abläufen mit einem Nullwert ausgewertet wird.
  2. Ein Ausdruck, für den statisch bekannt ist, dass er in bestimmten Abläufen mit einem Nullwert ausgewertet wird, wird als Argument in einem Methodenaufruf übergeben, in dem der entsprechende Parameter der aufgerufenen Methode mit einer Nicht-Nullanmerkung deklariert ist.
  3. Ein Ausdruck, für den statisch bekannt ist, dass er in bestimmten Abläufen als Nullwert ausgewertet wird, wird einer lokalen Variablen zugeordnet, die mit einer Nicht-Nullanmerkung deklariert ist.

Fehler

Ungeprüfte Konvertierung von Typ ohne Anmerkung in den Typ @NonNull

Abhängig von dieser Option gibt der Compiler entweder einen Fehler oder eine Warnung aus, wenn eine der folgenden Situationen festgestellt wird:

  1. Eine Methode, die mit einer Nicht-Nullanmerkung deklariert wurde, gibt einen Ausdruck zurück, für den nicht genügend Nullness-Informationen vorliegen, um statisch zu belegen, dass kein Ablauf zur Laufzeit einen Nullwert übergeben wird.
  2. Ein Ausdruck, für den nicht genügend Nullness-Informationen verfügbar sind, um statisch zu belegen, dass niemals während der Laufzeit eine Auswertung zu einem Nullwert auftritt, wird als Argument in einem Methodenaufruf übergeben, in dem der entsprechende Parameter der aufgerufenen Methode mit einer Nicht-Nullanmerkung deklariert ist.
  3. Ein Ausdruck, für den nicht genügend Nullness-Informationen verfügbar sind, um statisch zu belegen, dass niemals während der Laufzeit eine Auswertung zu einem Nullwert auftritt, wird einer lokalen Variablen zugeordnet, die mit einer Nicht-Nullanmerkung deklariert wurde.

Eine ungeprüfte Konvertierung ist normalerweise die Folge der Verwendung anderer Variablen oder Methoden ohne Anmerkung.

Warnung

Redundante Nullanmerkung

Ist diese Option aktiviert, gibt der Compiler einen Fehler oder eine Warnung aus, wenn eine Nicht-Nullanmerkung angewendet wird, auch wenn der gleiche Effekt bereits von einem Standardwert erreicht wurde, der an der aktuellen Position angewendet werden kann. Ein solcher Standardwert kann durch das Aktivieren der Option Nicht-Null als arbeitsbereichsweiten (oder projektweiten) Standardwert verwenden oder durch Verwendung der Anmerkung @NonNullByDefault definiert werden.

Warnung

Fehlende Anmerkung '@NonNullByDefault' im Paket

Ist diese Option aktiviert, gibt der Compiler in folgenden Fällen einen Fehler oder eine Warnung aus:

  1. Wenn ein Paket als Ergebnis eines fehlenden Elements package-info.java oder einer fehlenden Nullness-Standardanmerkung in package-info.java keine Nullness-Standardanmerkung enthält.
  2. Wenn ein Typ in einem Standardpaket keine Nullness-Standardanmerkung enthält.

Ignorieren

Standardanmerkungen für Nullspezifikationen verwenden

Ist diese Option aktiviert, verwendet der Compiler die Standardgruppe von Anmerkungen für Nullspezifikationen. Diese Anmerkungen werden im Eclipse-SDK in das Paket org.eclipse.jdt.annotation aufgenommen.

Sie können unterschiedliche Anmerkungsnamen angeben, die in Ihren Projekten verwendet werden sollen, müssen dabei aber beachten, dass der Eclipse-Compiler nur die Semantik unterstützt, die in den Standardanmerkungen angegeben ist:

  • org.eclipse.jdt.annotation.Nullable: Ein vollständig qualifizierter Name eines Java-Anmerkungstyps, der bei Anwendung auf einen Typ in einer Methodensignatur oder Variablendeklaration als Spezifikation interpretiert wird, die angibt, dass null an dieser Position ein zulässiger Wert ist.
    Momentan werden die folgenden Positionen unterstützt: Methodenparameter, Methodenrückgabetyp und lokale Variablen.
  • org.eclipse.jdt.annotation.NonNull: Ein vollständig qualifizierter Name eines Java-Anmerkungstyps, der bei Anwendung auf einen Typ in einer Methodensignatur oder Variablendeklaration als Spezifikation interpretiert wird, die angibt, dass null an dieser Position kein zulässiger Wert ist.
    Momentan werden die folgenden Positionen unterstützt: Methodenparameter, Methodenrückgabetyp und lokale Variablen.
  • org.eclipse.jdt.annotation.NonNullByDefault: Ein vollständig qualifizierter Name eines Java-Anmerkungstyps. Bei Anwendung auf ein Element ohne ein Anmerkungsargument werden alle Typen ohne Anmerkung in Methodensignaturen innerhalb des mit einer Anmerkung versehenen Elements so behandelt, als ob sie mit der Nicht-Nullanmerkung versehen worden wären.
    Wenn die Anmerkung hingegen mit der Konstanten 'false' als Argument angewendet wird, werden sämtliche Standardwerte in den äußeren Bereichen für das Element mit Anmerkung storniert.

Aktiviert

Wenn die Option Obige Fehler als schwerwiegende Kompilierungsfehler behandeln aktiviert ist, führen alle generierten Fehler (schwerwiegende und konfigurierbare) dazu, dass der Code nicht ausgeführt werden kann. Wenn diese Option inaktiviert ist, kann der Code ausgeführt werden, sofern er keinen schwerwiegenden Fehler aufweist (z. B. Syntaxfehler, Typfehler oder Fehler gemäß der Java-Sprachspezifikation).

Zugehörige Konzepte

Ansicht 'Fehler'
Schnellkorrektur
Java-Builder