Warum ist zur Laufzeit jemand interessiert, dass eine Methode veraltet ist? Können mir einige Beispiele geben?Warum ist die RetentionPolicy für @deprecated RUNTIME?
Antwort
Sie gehen davon aus, dass @deprecated nur in der Kompilierphase (IDE, Compiler) von Interesse ist, aber es ist keine Einschränkung für Imaging-Instrumentierungsszenarien, für die Sie diese Informationen benötigen.
Zum Beispiel kann eine IDE Sie über die Anzahl der Call-Sites für eine veraltete Methode informieren, aber wie würden Sie den Prozentsatz der Zeit bestimmen, die Ihre Anwendung in veralteten Methoden verbringt?
Stellen Sie sich vor, Sie kompilieren MyClass.class mit veralteten Methoden. Wenn Ihre @Deprecated-Annotationen verloren gegangen sind, kann Ihre IDE oder Ihr Compiler Sie nicht warnen, wenn Sie diese Methoden von einer anderen Klasse aufrufen.
Die eigene Laufzeit ist eine andere Designzeit, z. wenn Code geschrieben wird, der eine API verwendet.
Ähm ... wie meinst du das? Wenn ich eine API verwende, greife ich nicht über einen Debugger auf diese API zu. Ich benutze die Klassendateien für diese API, aber das wird von RetentionPolicy.Class abgedeckt. – meriton
Wenn Sie z. B. GUI-Komponenten aus der IDE-Palette verwenden und sie auf Ihrem Formular ablegen, wird der Code ausgeführt. – JRL
Gute Frage, und ich strecke mich aus, um ein überzeugendes Szenario zu entwickeln. Alles, was ich habe, ist, dass ich mir eine Anwendung vorstellen könnte, die einen Classloader verwendet, der die Verwendung von veraltetem Code nicht zulässt. Dies würde erfordern RetentionPolicy.RUNTIME
.
Das ist alles, was ich habe ...
Paar praktische Anwendungen in den Sinn kommen:
Mit Velocity Sie eine benutzerdefinierte Uberspector haben kann, die die tatsächlichen Anrufe von Velocity-Vorlagen auf jede veraltete Methode protokolliert und Dann können Sie durch Lesen des Protokolls sehen, wo die Methode verwendet wird und Sie können sie bearbeiten.
Mit Wicket Sie eine Sicherheitsrichtlinie haben kann, die jede Klasse auf den .class
Inhalte basierend verweigert das Instanziieren so könnte es möglich sein, ein System zu machen, die die Instanziierung @Deprecated
Klassen verhindert, wenn Sie kein Administrator.
in Bezug auf beide Punkte, wäre es immer noch möglich, sie zur Kompilierzeit zu überprüfen. Dependency Checker sollte den Trick machen, Nein sicher, wenn ich verstehe, was Sie oben gesagt haben – Ravisha
Es gibt einige Frameworks und Tools, mit denen Objekte instanziiert werden, um mit ihnen zu arbeiten.
Zum Beispiel erstellen viele JavaBean-UI-Editoren Instanzen der Beans und interagieren mit ihnen, wenn der Benutzer die Benutzeroberfläche, die er entwirft, manipuliert.
Wenn die Annotation @Deprecated zur Laufzeit verfügbar ist, können Tools wie diese veraltete Methoden, Ereignisse und Eigenschaften für den Benutzer kennzeichnen.
- 1. @deprecated vs @Deprecated
- 2. Warum alle Angular 2.0 DI API als @deprecated markiert ist?
- 3. Deprecated: Function eregi() ist veraltet in
- 4. "Target F # Runtime" ausgegraut - warum?
- 5. Warum löst die @Deprecated-Annotation keine Compilerwarnung für eine Methode aus?
- 6. normalisieren Datum deprecated Zeitklasse
- 7. morgan deprecated expressjs
- 8. Konstante Deprecated: preg_replace() Fehler
- 9. Runtime pompt für Rapidminer
- 10. Was ist das Gegenteil von @deprecated in Java
- 11. JSDoc @param zusammen mit @deprecated
- 12. deprecated preg_replace/e mit preg_replace_callback
- 13. Was ist das .NET-Äquivalent von @Deprecated in Java?
- 14. "Aktiviert Runtime-Designs" die Leistung?
- 15. Was bedeutet @Deprecated für Methodenparameter und lokale Variablen?
- 16. Runtime Die Zip-PHP-Erweiterung nicht installiert ist
- 17. AkkaNet Deprecated Scheduler - wie man es ersetzt?
- 18. Android 6 Runtime-Berechtigung für den Zugriff auf die Galerie.
- 19. Runtime Overhead von Blöcken für die sofortige Zuweisung von Variablen
- 20. Kaffee Skript path.exists deprecated Mitteilung von node.js
- 21. 'System.DateTime' ist kein gültiger Windows Runtime-Parametertyp
- 22. Runtime Page Optimizer für ASP.net - Irgendwelche Kommentare?
- 23. Architektur für Plugins zum Laden in Runtime
- 24. Direkte Datenvirtualisierung für ListView unter Windows Runtime
- 25. Task-lokale Variablen für Concurrency Runtime implementieren
- 26. Warum ist die Ausrichtung der Datenstruktur wichtig für die Leistung?
- 27. Warum ist die Vorbelegung für die Liste nützlich?
- 28. Ermitteln ist Taste gedrückt ist alphanumerisch in Windows Runtime
- 29. Otto Event Bus Runtime-Abonnement für Ereignisse
- 30. Runtime generische Typbestimmung
RetentionPolicy.Class wäre auch dafür ausreichend. – Jorn