Eclipse Fehlermeldung - The constructor Double(double) is deprecated

ReinerCoder

Bekanntes Mitglied
Habe in Eclipse folgende Fehlermeldung

Multiple markers at this line
- Line breakpoint😛rismaRechner [line: 780] -
rechnen()
- The constructor Double(double) is deprecated

Also diese Meldung kenne ich nicht und kann damit nicht viel anfangen. Habe dazu was gelesen und mir ist trotzdem nicht klar was diese Meldung soll.

Hab die Sache erstmal so verstanden das "double" bald veraltet ist oder mein Constructror?!

Betriff u.a. folgende Zeilen Code:

Java:
ta.setValue(new Double (p.getA()));

Hier ein Bild von Eclipse:

Eclipse Fehlermeldung.jpg
 
Zuletzt bearbeitet:
Also diese Meldung kenne ich nicht und kann damit nicht viel anfangen. Habe dazu was gelesen und mir ist trotzdem nicht klar was diese Meldung soll.

Hab die Sache erstmal so verstanden das "double" bald veraltet ist oder mein Constructror?!
Weder double noch dein Konstruktor, sondern der Konstruktor von Double.

Nutz entweder Autoboxing oder das explizite Double.valueOf.
 
Weder double noch dein Konstruktor, sondern der Konstruktor von Double.

Nutz entweder Autoboxing oder das explizite Double.valueOf.

Kann dies auch genauer erklärt werden wie sowas aussehen soll? Kann da grade nichts mit anfangen..oder Beispiele wären super. Ich habe immer ganz gerne Beispiele dann verstehe ich sowas eher. Und auch wie gesagt habe lange nichts mit Java gemacht und ich weiß das auch sehr viel hinzugekommen ist in den ganzen Jahren. Autoboxing z.B. sagt mir schon mal nichts..

Wie z.B. müsste die Zeile mit Double.valueOf. aussehen?
 
Zuletzt bearbeitet:
Autoboxing bezeichnet den automatischen Wechsel von den primitiven Typen (double, int, long, boolean, ...) hin zu den entsprechenden Klassen in Java (Double, Integer, Long, ...). Also wenn Du ein double angibst, aber ein Double erwartet wird, dann sorgt der java Compiler für die entsprechende Umwandlung.
Unboxing wäre der umgekehrte Weg.

An der Stelle evtl. noch interessant: Gewisse Typen kann Java auch automatisch umwandeln. Das erfolgt teilweise implizit (wenn keine Informationen verloren gehen können) oder explizit - dann können Informationen verloren gehen.

Also int -> long. Ein int kann immer in ein long umgewandelt werden. Da muss man nichts weiter angeben.
Java:
int intValue = ......;
long longValue = intValue;

long -> int: Der Wert in long könnte zu groß sein. Da gehen dann Daten verloren. Daher muss man als Entwickler diese Umwandlung explizit angeben mit einem cast:
Java:
long longValue = ......;
int intValue = (int) longValue;

Ansonsten hat die Klasse Double eine Methode valueOf:
Diese Methode nimmt auch einen double (oder einen String - die Methode ist überladen) und erzeugt einen neuen Double.
 
Mir scheint trotzdem nicht ganz klar zu sein wieso Eclipse die Warnung ausgibt, da ich nicht weiß was da umgewandelt werden soll.

Ich erstelle Textfelder mit z.B.

[CODE lang="java" title="Text Feld erstellen"]ta = new JFormatedTextField(new Double (0.0));[/CODE]

Und dann hole ich von dem Objekt p die Double Werte mit den schon oben gezeigten Zeilen zurück in die Textfelder.

Dabei muss kein Casting und auch kein Autoboxing stattfinden, da beides in Double passiert. Deswegen verstehe ich die Warnung nicht.
 
Dabei muss kein Casting und auch kein Autoboxing stattfinden, da beides in Double passiert. Deswegen verstehe ich die Warnung nicht.
Der Konstruktor von Double ist als Deprecated markiert und wird potentiell in Zukunft entfernt, daher die Warnung, dass du diesen nicht benutzen solltest.

Autoboxing bzw valueOf wäre die Lösung für das Problem, nicht dir Ursache der Warnung.
 

Neue Themen


Zurück
Oben