Ich habe eine Anmerkung erstellt
%Vor%Ich benutze dies für Methoden, die wie folgt aussehen:
%Vor% Die Variable v
wird vom Android-Reflexionssystem benötigt, um diese Methode aufzurufen.
Allerdings ist die Eingabe var v
unbenutzt, daher warnt mich meine IDE davor. Ich mag diese Warnung und möchte sie für den Rest meines Codes verwenden .
Um die Warnung zu verbergen, konnte ich
tun %Vor%oder ich könnte ein param-Tag hinzufügen
Aber ich würde lieber, dass die IDE (Eclipse) liest meine% Co_de% Annotation und gibt mir keine Warnung.
Ich weiß Sie können eine Anmerkung nicht erweitern , aber das ist im Grunde, was ich tun möchte.
Gibt es eine Möglichkeit, meine Annotation hinzuzufügen, um als "unterdrücken Warnungen "Annotation.
oder
Gibt es eine Möglichkeit, meine Annotation so zu programmieren, dass sie sich wie "Warnungen unterdrücken" verhält?
Ok, ich kann das nicht auf einfache Art und Weise machen.
Blick auf das Annotationspaket Ссылка
Ich kann eine Anmerkung nicht erweitern: Warum können Anmerkungen in Java nicht erweitert werden?
Ich kann keine weitere Annotation implementieren java.lang.Override
Ich kann nicht nachahmen / vortäuschen / vorgeben, @Override
Wenn ich @Override
zu meinem @FromXML
hinzufüge, wird es NICHT in der Kette vererbt.
Der einzige Weg wäre, ein Eclipse-Plugin zu erstellen, das meine Anmerkung erkennt und die Warnung stoppt. Schade, weil ich keinen einfachen Weg finde, dies zu tun.
Ich habe auch den Weg zum Erstellen eines Interface für meine @FromXML
-Einstiegspunkte gewählt, das war sehr nett und teilte mir mit, dass Activity
von einem Typ ist und ich daher die Annotation nicht mehr brauche, vielleicht diese Designänderung ist die Antwort.
Sie können immer ein Plugin für Eclipse erstellen, das die Quelle durchsucht und diese Annotationen in Ihrem Fall @FromXML
findet und eine zusätzliche Annotation in Ihrem Fall @SuppressWarnings
hinzufügt.
Sie könnten einen Befehl dafür erstellen und wenn dieser Befehl ausgelöst wird, würden Sie dieses Plugin ausführen.
Hoffe, das hilft.
AKTUALISIEREN - ES WAR EIN FLUKE KANN NICHT MIT DIESEM GEBRAUCHT WERDEN (VERSUCHT):
Oder Verwenden von AspectJ zum Entfernen der Warnungen Hinzufügen von Warnungen in Eclipse mit AspectJ
Dieses Tutorial verwendet AspectJ zum Hinzufügen von Warnungen zu Eclipse, wenn der Entwickler System.out.println()
im Code verwendet. Das Umgekehrte kann also gemacht werden, um die Warnung zu entfernen wenn Annotation vorhanden ist.
UPDATE 2: Es gibt in Eclipse eine Möglichkeit, einen benutzerdefinierten Annotationsprozessor zu erstellen oder den Annotationsprozessor zu bearbeiten (der die Warnung für nicht verwendete Variablen generiert). Also muss dieser Prozessor auf eine bestimmte Art und Weise optimiert werden.
Einige großartige Links:
Tutorials für die Entwicklung von Eclipse Annotation-Prozessoren
Java-Entwicklungstools - Tools zur Bearbeitung von Annotations
Ich denke, Sie könnten eine Schnittstelle erstellen, die diese Methode definiert. Auf diese Weise überschreibt Ihre Klasse die Methode und es sollte keine Warnung angezeigt werden.
VonXML.java:
%Vor%MeinInterface.java:
%Vor%MyClass.java
%Vor%BEARBEITEN: Eine andere Lösung könnte darin bestehen, Ihre Methode als abstrakt zu definieren. In der Tat, wie ich Ihren Code verstehe, sind Ihre Methoden nur Deklaration (Implementierungen sind in einer XML-Datei). Also, Ihr Problem ist mehr ein Design-Problem als ein IDE-Problem (Ihre IDE ist genau richtig mit der Warnung). Die Realität ist, dass Ihre Methode abstrakt ist und woanders definiert ist.
Wenn Sie also Ihre Methode als abstrakt definieren, wird das Problem gelöst, aber Sie müssen die Klasse abstrakt machen:
%Vor%Ich weiß, dass Sie sagen werden, dass diese Lösung es unmöglich macht, Objekte leicht zu erstellen, aber Sie haben dann zwei Lösungen:
1 - Erstellen Sie Ihre Objekte inline:
%Vor% 2 - Erstellen Sie eine Factory-Methode in Ihrem Abstract MyClassUsingOnSomethingClick
:
Auch wenn ich verstehe, dass Sie eine schnellere Lösung bevorzugen würden, glaube ich, dass diese Lösung am saubersten ist, weil:
Tags und Links eclipse java android annotations suppress-warnings
Damit eine Funktion tail-rekursiv ist, muss nach der Rückgabe der Funktion nichts weiter zu tun sein, als ihren Wert zurückzugeben. Das heißt, das letzte, was im rekursiven Schritt passiert, ist der Aufruf der Funktion selbst. Dies wird im Allgemeinen durch Verwendung eines Akkumulatorparameters erreicht, um die Antwort zu verfolgen:
%Vor%Die obige Prozedur wird zunächst mit %code% als Akkumulator wie folgt aufgerufen:
%Vor%Beachten Sie, dass der akkumulierte Wert zurückgegeben wird, wenn der Basisfall erreicht wird, und dass der Parameter %code% an jedem Punkt des rekursiven Aufrufs aktualisiert wird. Ich musste der Prozedur einen zusätzlichen Parameter hinzufügen, aber dies kann vermieden werden, indem man eine innere Prozedur oder eine benannte %code% definiert, zum Beispiel:
%Vor%Ich lerne für einen Weihnachtstest und mache ein paar Prüfungsfragen, ich bin auf dieses Problem gestoßen, das mich ein wenig ratlos macht.
Ich kann reguläre Rekursion gut machen, aber ich kann nicht meinen Kopf darum drehen, wie ich dasselbe mit der Schwanzrekursion schreiben kann.
Reguläre Version:
%Vor%