FB18.de - Das Informatikforum
Java Editor Warnmeldung die ich nicht so wirklich verstehe - Druckversion

+- FB18.de - Das Informatikforum ( /mybb )
+-- Forum: Diplom Informatik ( /forumdisplay.php?fid=114 )
+--- Forum: Unterbereich Grundstudium ( /forumdisplay.php?fid=123 )
+---- Forum: Praktische Informatik ( /forumdisplay.php?fid=17 )
+---- Thema: Java Editor Warnmeldung die ich nicht so wirklich verstehe ( /showthread.php?tid=6268 )


Java Editor Warnmeldung die ich nicht so wirklich verstehe - Connor - 02.11.2005 15:51

The constructor Date(int, int, int) is deprecated

In der API für java.util.Date steht der Konstruktor  Date(int,int,int) um ein Datum mit Tag Monat und Jahr zu erstellen. Ich hab die Klasse Datum importiert und dann den Konstruktor aufgerufen um ein Objekt von Typ Datum zu erstellen welches ein Attribut meiner eigenen Klasse ist.

Date vergleichsDatum = new java.util.Date(3,11,2005);

Eclipse streicht mir das Date durch und schreibt die oben genannte Meldung als Warnung.


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Tweety - 02.11.2005 16:14

Wie du schon geschrieben hast ist es nur eine "warning" und kein "error". Das heißt die ganze Sache ist nicht wirklich schlimm.

Deprecated bedeutet, dass diese Methode (oder auch Klasse) nicht mehr benutzt werden soll. Dies kann verschiedene Gründe haben. Meist wird die gleiche Funktionalität auf eine andere (vermeintlich bessere) Weise zur verfügung gestellt. Wenn du deprecated Methoden benutzt könnte es sein, dass in zukünftigen Versionen von Java diese weggelassen werden, deine Programme also nicht mehr laufen. Aber hier braucht man nicht in Panik zu verfallen, sooft kommen auch keine Java-Major-Releases raus, bzw. selbst dann ist nicht sicher, ob die Methode nicht weiterhin einfach deprecated ist (was meines wissens recht wahrschenlich ist).

In allen (halbwegs vernünftigen) Java-Büchern sollte sich dazu noch mehr finden lassen.


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Connor - 02.11.2005 17:01

Was für ne Verarschung istn das. Ich weiß nicht wie veraltet die Universionen sind und obs da dann normal läuft. Aber bei mir zuhause Funktioniert Date nicht mehr richtig. Ich erstelle eine Date Datum = new Date(2005,10,1)
mach dann Datum.getDay() und er halte 3 anstelle von 1...

oder noch besser kams mit 1 12 2005  wo man aufeinmal in Jahr 2006 gelandet ist.


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - guiltyguy - 02.11.2005 17:17

google sagt:
"Date Deprecated. As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date)  or GregorianCalendar(year + 1900, month, date)."

Hast du das mit Calendar.set mal versucht?

Entsprechend gilt dann auch: Calendar.get(Calendar.DAY_OF_MONTH).


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Anonymer User - 02.11.2005 17:39

Zitat:
Was für ne Verarschung istn das.


Bevor Du hier so großspurig rumpolterts, solltest Du es mal Deinen Kopf einschalten. Offensichtlich machst Du Aufrufe, ohne Dir bewußt zu sein, was deren Bedeutung ist.

Zitat:
Ich weiß nicht wie veraltet die Universionen sind und obs da dann normal läuft. Aber bei mir zuhause Funktioniert Date nicht mehr richtig.

Es wird an der Uni wahrscheinlich die selben Ergebnisse bringen. Warum? Weil sie richtig sind.

Zitat:
Ich erstelle eine Date Datum = new Date(2005,10,1)
mach dann Datum.getDay() und er halte 3 anstelle von 1...

Was korrekt ist: Der 1.November 3905 ist ein Mittwoch

Zitat:
oder noch besser kams mit 1 12 2005  wo man aufeinmal in Jahr 2006 gelandet ist.

Weil Du damit wohl auch nach dem 1. Januar fragst.

Also: Lies die mal die Bedeutung Deiner Methodenaufrufe durch und danach können wir weiterreden.

LEIFer


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Brokkoli - 02.11.2005 18:40

immer alles auf java schieben.. naja irgendwer (-was) muss ja schuld sein, oder? Also wie die anderen schon geschrieben haben - Java läuft schon richtig.. Man muss es nur programmieren können..


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Connor - 03.11.2005 09:25

Die haben so wie ich zu denken... es heißt doch schließlich auch day month und year  was mag der sich gedacht haben bei getDay den namen des Wochentages zu nehmen...

naja aber man soll hier date verwenden und nicht gregorian.calendar...

aber die date liefern halte falsche ergebnisse
Date Erscheinungsdatum = Date(2005,10,1)
String StringDatum = ""+Erscheinungsdatum.getDate()+"."+Erscheinungsdatum.getMonth()+
"."+Erscheinungsdatum.getYear();

StringDatum = "1.0.2006"


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Slater - 03.11.2005 09:39

obwohl 2005 bei Date ja wie schon geschrieben dem Jahr 3905 entspricht steht eigentlich einer korrekten Ausgabe nix im Wege,
bei mir wird auch 1.10.2005 ausgegeben,

da scheint ja wirklich was kaputt zu sein falls du nicht falsche Eingaben machst,
dein geposteter Code scheint nicht unbedingt der zu sein den du verwendest, da fehlt ein Semikolon und die Ausgabe

versuch mal diesen Code hier auszuführen, wenn dann nicht 1.10.2005 rauskommt dann darfst du dich wundern:
Code:
Date d = new Date(2005,10,1);
String st = ""+d.getDate()+"."+d.getMonth()+"."+d.getYear();
System.out.println(st);


---------

wichtiger Tipp: schreibe Variablen-/Referenzennamen unbedingt klein, zur Unterscheidung von Klassen

bestes Beispiel:
System.out.println()
-> System ist Klasse, out ein Objekt/ eine Referenz darin

----------------


falls du vorherigen Beiträge nicht richtig gelesen hast:
die Monate laufen von 0 bis 11, nicht von 1 bis 12!

wenn du 2005,12,1 eingibst, dann kommt 1.0.2006 raus!


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Anonymer User - 03.11.2005 14:07

Zitat:
Die haben so wie ich zu denken...

Klar, *tätschel*.

Ich kenne Dich sonst nicht, aber mit Deinen Äußerungen in dieser Diskussion scheinst Du mir genau einer dieser Egomanen zu sein, mit denen man verdammt schwer zusammenarbeiten kann. Und falls es Dir noch nicht bewusst ist: Entgegen der Klischees ist in der Informatikbranche sehr viel Teamwork gefragt.

Ja, ich habe den Hauch von Ironie-Tags um Deinen obigen Satz gesehen, aber so wie Du Dich sonst hier geäußert hast, könntest Du das sogar fast ernsthaft behaupten.

Zitat:
es heißt doch schließlich auch day month und year  was mag der sich gedacht haben bei getDay den namen des Wochentages zu nehmen...

Ja, das ist ein wenig trügerisch, aber spätestens wenn man in Tests Fehler bekommt, sollte man doch mal in die Dokumentation gucken. Und wenn man eine API noch gar nicht kennt, dann sollte man bei deren Verwendung noch etwas aufmerksamer sein. Learn to help yourself.

Tatsächlich kann man an der Klasse Date einiges kritisieren, aber u.a. deswegen ist sie ja zum größten Teil deprecated und fast nur noch als Zeitstempel verwendbar.

LEIFer


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Connor - 03.11.2005 16:30

Mein erster kommentar war ironisch gemeint, aber ich bin nur  gereizt wenn etwas nicht so Funktioniert wie erwartet.

Irgendwie will bei mir Calendar nicht so richtig

import java.util.Calendar;

public class ...
{
Calendar Abcde = new Calendar();
...
}

Cannot instantiate the type Calendar
Erhalte ich als Meldung wenn ich mir das mal angucke was rot unterstrichen ist.

Soweit ich das interpretiere heißt das wohl das das Objekt Abcde nicht erstellt werden kann.


Calendar() ist eine in der API angegebene Constructor Methode

Wie mach ich denn dann ein Calendar Objekt?



Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Anonymer User - 03.11.2005 16:52

Zitat:
Calendar() ist eine in der API angegebene Constructor Methode

Der Konstruktor ist nicht public, sondern protected. Deswegen kannst Du ihn nur aus dem Paket java.util oder Unterklassen von Calendar aufrufen. Braucht man aber normalerweise auch nicht:

Zitat:
Wie mach ich denn dann ein Calendar Objekt?

Für die lokale Zeitzone:

Code:
Calendar.getInstance();




Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Connor - 03.11.2005 17:14

Calendar Datum2 = new Calendar.getInstance();

geht irgendwie auch nicht


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Tzwoenn - 03.11.2005 17:31

Zitat:
Calendar Datum2 = new Calendar.getInstance();

geht irgendwie auch nicht


Ist das Teil deiner Hausaufgaben oder dein Privatvergnügen? Im ersteren Fall würde ich dir ernsthaft raten, die Vorlesungen zu besuchen. Ich fand sie zu meiner Zeit zwar auch nicht sooo unheimlich spannend, aber irgendwas nimmt man selbst in den langweiligsten Veranstaltungen mit

Die Zeile dürfte gar nicht kompilieren, weil sie syntaktisch falsch ist. (new Calendar).getInstance() wäre korrekt, da aber getInstance() eine statische Methode ist, kannst du sie nicht an einer Instanz der Klasse Calendar, sondern nur an der Klasse selbst aufrufen.

Was du erreichen willst, ist glaub ich

Code:
Calendar Datum2 = Calendar.getInstance();




Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - UncleOwen - 03.11.2005 17:41

Zitat:
da aber getInstance() eine statische Methode ist, kannst du sie nicht an einer Instanz der Klasse Calendar, sondern nur an der Klasse selbst aufrufen.


Kann man schon, macht nur wenig Sinn...


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - Slater - 03.11.2005 17:50

schreibt doch bitte alle Variablennamen klein ;)

ansonsten geht übrigens auch noch Calendar c = new GregorianCalendar(year, ..);
das ist nämlich eine konkrete Calendar-Klasse, während Calendar selber nur ein besseres Interface darstellt,

solche und ähnliche Probleme wirst du aber noch zu tausenden haben,
lerne in die API zu schauen/ besser noch vorher ein Lehrbuch zu lesen,


was steht ganz oben direkt dick in der API einleitend zum Umgang mit Calendar?

Zitat:
Calendar is an abstract base class for converting between a Date object and a set of integer fields such as YEAR, MONTH, DAY, HOUR, and so on. (A Date object represents a specific instant in time with millisecond precision. See Date  for information about the Date class.)

Subclasses of Calendar interpret a Date according to the rules of a specific calendar system. The platform provides one concrete subclass of Calendar: GregorianCalendar. Future subclasses could represent the various types of lunar calendars in use in many parts of the world.

Like other locale-sensitive classes, Calendar provides a class method, getInstance, for getting a generally useful object of this type. Calendar's getInstance method returns a Calendar object whose time fields have been initialized with the current date and time:

Calendar rightNow = Calendar.getInstance();

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html


Re: Java Editor Warnmeldung die ich nicht so wirklich verstehe - leif - 03.11.2005 18:41

Zitat:
(new Calendar).getInstance() wäre korrekt

[nitpick]Nein, selbst wenn die Klasse nicht abstrakt und der Konstruktor sichtbar wäre, würden da noch immer Klammern nach "Calendar" fehlen[/nitpick]