Ich verwende Eclipse, um eine Webanwendung zu entwickeln. Erst heute habe ich meine Struts-Version durch Ändern der JAR-Datei aktualisiert. Ich erhalte an einigen Stellen Warnungen, dass Methoden veraltet sind, aber der Code funktioniert einwandfrei.
Ich möchte einige Dinge wissen
Ist es falsch, veraltete Methoden oder Klassen in Java zu verwenden?
Was passiert, wenn ich keine Methode ändere und meine Anwendung mit Warnungen ausführe, die ich habe, wird dies zu Leistungsproblemen führen.
java
methods
deprecated
Umesh Aawte
quelle
quelle
1955 Volkswagen Beetle
auch wenn SieCorvette Stingray
kostenlos angeboten werden? (0:4
andere: Gotcha! (0;1955 Volkswagen Beetle
und1956 Volkswagen Beetle
mit neuen Reifen, von denen Sie nicht wissen, wann sie kaputt gehen werden!Antworten:
Aus der Definition von veraltet :
Die Methode wird aus Gründen der Abwärtskompatibilität für einen nicht festgelegten Zeitraum in der API gespeichert und kann in zukünftigen Versionen entfernt werden. Das heißt, nein, es ist nicht falsch , aber es gibt einen besseren Weg, der robuster gegen API-Änderungen ist.
Höchstwahrscheinlich nein. Es wird weiterhin wie vor der Abschreibung funktionieren. Der Vertrag der API-Methode wird nicht geändert. Wenn sich einige interne Datenstrukturen zugunsten einer neuen, besseren Methode ändern, kann dies Auswirkungen auf die Leistung haben, dies ist jedoch ziemlich unwahrscheinlich.
Die lustigste Abwertung in der Java-API ist imo, die
FontMetrics.getMaxDecent
. Grund für die Ablehnung: Rechtschreibfehler.quelle
Sie können weiterhin veralteten Code verwenden, ohne dass die Leistung geändert wird. Der Sinn einer veralteten Methode / Klasse besteht jedoch darin, den Benutzern mitzuteilen, dass es jetzt eine bessere Möglichkeit gibt, sie zu verwenden, und dass der veraltete Code in einer zukünftigen Version wahrscheinlich entfernt wird.
quelle
Terminologie
Aus dem offiziellen Sun-Glossar:
Aus der Anleitung zum Wie und Wann:
Die
@Deprecated
Anmerkung ging noch einen Schritt weiter und warnte vor Gefahren:Verweise
Richtig oder falsch?
Die Frage, ob es richtig oder falsch ist, veraltete Methoden anzuwenden, muss individuell geprüft werden. Hier sind ALLE Anführungszeichen, in denen das Wort "veraltet" in Effective Java 2nd Edition vorkommt :
Zumindest bei allen oben genannten Methoden ist es eindeutig falsch, sie zu verwenden, zumindest laut Josh Bloch.
Bei anderen Methoden müssten Sie die Probleme einzeln betrachten und verstehen, WARUM sie veraltet sind. Wenn die Entscheidung zur Verwerfung jedoch gerechtfertigt ist, tendiert sie im Allgemeinen dazu, sie eher falsch als richtig zu verwenden.
Verwandte Fragen
quelle
Abgesehen von all den hervorragenden Antworten, die ich oben gefunden habe, gibt es einen weiteren Grund, veraltete API-Aufrufe zu entfernen.
Wenn ich nachforsche, warum ein Anruf veraltet ist, lerne ich oft interessante Dinge über Java / die API / das Framework. Es gibt oft einen guten Grund, warum eine Methode veraltet ist, und das Verständnis dieser Gründe führt zu tieferen Einsichten.
Aus Sicht des Lernens / Wachsens ist es auch eine lohnende Anstrengung
quelle
Es entsteht sicherlich kein Leistungsproblem - veraltet bedeutet, dass die Funktion in Zukunft wahrscheinlich nicht mehr Teil der Bibliothek sein wird. Sie sollten sie daher nicht in neuem Code verwenden und Ihren alten Code so ändern, dass sie nicht mehr verwendet wird Eines Tages treten keine Probleme auf, wenn Sie die Streben aktualisieren und feststellen, dass diese Funktion nicht mehr vorhanden ist
quelle
It certainly doesn't create a performance issue
; Es ist zu subjektiv, um das zu sagen.Es ist nicht falsch, es wird einfach nicht empfohlen. Dies bedeutet im Allgemeinen, dass es an diesem Punkt eine bessere Möglichkeit gibt, Dinge zu tun, und Sie würden Gutes tun, wenn Sie die neue verbesserte Methode verwenden. Einige veraltete Sachen sind wirklich gefährlich und sollten ganz vermieden werden. Der neue Weg kann zu einer besseren Leistung führen als der veraltete, ist jedoch nicht immer der Fall.
quelle
Sie haben vielleicht den Begriff "selbstironischer Humor" gehört. Das ist Humor, der Ihre Wichtigkeit minimiert. Eine veraltete Klasse oder Methode ist so. Es ist nicht mehr wichtig. Es ist in der Tat so unwichtig, dass es überhaupt nicht mehr verwendet werden sollte, da es wahrscheinlich in Zukunft nicht mehr existieren wird.
Versuche es zu vermeiden
quelle
deprecated
Methoden zu verwenden , solange Sie einen guten Notfallplan haben, um Probleme zu vermeiden, wenn diese Methoden aus der von Ihnen verwendeten Bibliothek verschwinden. Mit der Java-API selbst passiert dies nie, aber mit fast allem anderen bedeutet dies, dass es entfernt wird. Wenn Sie speziell planen, die unterstützenden Bibliotheken Ihrer Software nicht zu aktualisieren ( obwohl dies auf lange Sicht höchstwahrscheinlich der Fall sein sollte ), ist die Verwendung vondeprecated
Methoden kein Problem .quelle
Ja, das ist falsch.
Veraltete Methoden oder Klassen werden in zukünftigen Versionen von Java entfernt und sollten nicht verwendet werden. In jedem Fall sollte eine Alternative verfügbar sein. Verwende das.
Es gibt einige Fälle, in denen Sie eine veraltete Klasse oder Methode verwenden müssen, um ein Projektziel zu erreichen. In diesem Fall haben Sie wirklich keine andere Wahl, als es zu verwenden. Zukünftige Versionen von Java können diesen Code beschädigen, aber wenn dies erforderlich ist, müssen Sie damit leben. Es ist wahrscheinlich nicht das erste Mal, dass Sie etwas falsch machen mussten, um eine Projektanforderung zu erfüllen, und es wird sicherlich nicht das letzte Mal sein.
Wenn Sie auf eine neue Version von Java oder einer anderen Bibliothek aktualisieren, wird manchmal eine von Ihnen verwendete Methode oder Klasse veraltet. Veraltete Methoden werden nicht unterstützt, sollten jedoch keine unerwarteten Ergebnisse liefern. Das bedeutet jedoch nicht, dass dies nicht der Fall ist. Wechseln Sie Ihren Code so schnell wie möglich.
Der Verfallsprozess soll sicherstellen, dass die Autoren genügend Zeit haben, um ihren Code von einer alten API auf eine neue API umzustellen. Nutzen Sie diese Zeit. Ändern Sie Ihren Code so schnell wie möglich.
quelle
Es ist nicht falsch, aber einige der veralteten Methoden werden in zukünftigen Versionen der Software entfernt, sodass Sie möglicherweise keinen funktionierenden Code mehr haben.
quelle
Removed
? Siehe Definition stackoverflow.com/questions/2941900/…Nicht falsch als solches, aber es kann Ihnen einige Probleme ersparen. In diesem Beispiel wird dringend davon abgeraten, eine veraltete Methode zu verwenden:
http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html
Es sollte keine Leistungsprobleme geben. Die Standard-API wurde so konzipiert, dass eine gewisse Abwärtskompatibilität berücksichtigt wird, sodass Anwendungen schrittweise an neuere Java-Versionen angepasst werden können.
quelle
Ist es falsch, veraltete Methoden oder Klassen in Java zu verwenden? Es ist nicht "falsch", funktioniert immer noch, aber vermeiden Sie es so weit wie möglich.
Angenommen, mit einer Methode ist eine Sicherheitslücke verbunden, und die Entwickler stellen fest, dass es sich um einen Konstruktionsfehler handelt. Daher können sie beschließen, die Methode zu verwerfen und den neuen Weg einzuführen.
Wenn Sie also immer noch die alte Methode verwenden, besteht eine Bedrohung. Seien Sie sich also des Grundes für die Ablehnung bewusst und prüfen Sie, ob sich dies auf Sie auswirkt.
Was passiert, wenn Sie keine Methode ändern und meine Anwendung mit Warnungen ausführen, die ich habe? Dies führt zu Leistungsproblemen.
Wenn die Abwertung auf ein Leistungsproblem zurückzuführen ist, leiden Sie unter einem Leistungsproblem. Andernfalls besteht kein Grund für ein solches Problem. Ich möchte noch einmal darauf hinweisen, sich des Grundes der Abwertung bewusst zu sein.
quelle
In Java ist es @Deprecated, in C # ist es [veraltet].
Ich glaube, ich bevorzuge die Terminologie von C #. Es bedeutet nur, dass es veraltet ist. Sie können es weiterhin verwenden, wenn Sie möchten, aber es gibt wahrscheinlich einen besseren Weg.
Es ist wie mit Windows 3.1 anstelle von Windows 7, wenn Sie glauben, dass Windows 3.1 veraltet ist. Sie können es weiterhin verwenden, aber es gibt wahrscheinlich bessere Funktionen in einer zukünftigen Version, und die zukünftigen Versionen werden wahrscheinlich unterstützt - die veraltete wird es nicht sein.
Gleiches gilt für Java's @Deprecated - Sie können die Methode weiterhin verwenden, aber auf eigenes Risiko - in Zukunft hat sie möglicherweise bessere Alternativen und wird möglicherweise nicht einmal unterstützt.
Wenn Sie veralteten Code verwenden, ist dies normalerweise in Ordnung, solange Sie nicht auf eine neuere API aktualisieren müssen. Der veraltete Code ist dort möglicherweise nicht vorhanden. Ich schlage vor, wenn Sie etwas sehen, das veralteten Code verwendet, zu aktualisieren, um die neueren Alternativen zu verwenden (dies wird normalerweise in der Anmerkung oder in einem veralteten Javadoc-Kommentar erwähnt).
Bearbeiten: Und wie Michael betont hat, sollte man den veralteten Code natürlich nicht verwenden, wenn der Grund für die Ablehnung auf einen Fehler in der Funktionalität zurückzuführen ist (oder weil die Funktionalität nicht einmal existieren sollte).
quelle
Natürlich nicht - da das gesamte Java @Deprecated wird :-) Sie können sie jederzeit verwenden, solange Java verfügbar ist. Ich werde sowieso keinen Unterschied bemerken, es sei denn, es ist etwas wirklich kaputtes. Das heißt - muss darüber lesen und dann entscheiden.
Wenn jedoch in .Net etwas als [veraltet] deklariert ist, lesen Sie es sofort, auch wenn Sie es noch nie zuvor verwendet haben - Sie haben eine Wahrscheinlichkeit von 50%, dass es effizienter und / oder einfacher zu verwenden ist als das Ersetzen :-))
Im Allgemeinen kann es heutzutage sehr vorteilhaft sein, technokonservativ zu sein, aber Sie müssen zuerst Ihre Leseaufgabe erledigen.
quelle
Ich denke, dass veraltete Methode bedeutet; Es gibt eine alternative Methode, die in allen Aspekten besser ist als die bestehende Methode. Verwenden Sie besser die gute Methode als die vorhandene alte Methode. Aus Gründen der Abwärtskompatibilität werden alte Methoden als veraltet belassen.
quelle