Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ergebnisse aus statischen Methoden weiterverwenden
ich habe mich mal mit dem Thema statische Methoden auseinander gesetzt. Und habe folgendes verstanden (wenn es so richtig ist :?: ).
Statische Methoden sind u.a. dann anzuwenden, wenn z.B. wie in meinen Testbeispiel von der Klasse keine Instanz benötigt wird. Ferner sind statische Methoden schneller. Also dachte ich mir folgendes:
Ich habe eine Klasse mit 2 Methoden, die eine Umrechnung von String nach Date erledigen. Also habe ich diese statisch definiert.
Code:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FormatDateTime {
/*
* Formating InputString to DateFormat
*/
public static Date formatDate(String inDate) {
DateFormat formatDay = new SimpleDateFormat("dd.MM.yyyy");
Date tmpDate = null;
try{
tmpDate = formatDay.parse(inDate);
return tmpDate;
}
catch (Exception ex) {
System.out.println("[ERROR ]:" + ex);
return null;
}
}
/*
* Formating InputString to TimeFormat
*/
public static Date formatTime(String inTime) {
DateFormat formatHour = new SimpleDateFormat("HH:mm");
Date tmpDate = null;
try{
tmpDate = formatHour.parse(inTime);
return tmpDate;
}
catch (Exception ex) {
System.out.println("[ERROR ]:" + ex);
return null;
}
}
}
Wenn ich diese nun verwende, dann moniert als Warunung eclipse "... schould be accessed in a static way". Das habe ich nun nicht verstanden? Was sollte hier beachtet bzw. was muss ich anders machen? Der Rückgabewert der Methode möchte ich natürlich als nicht statischen Wert weiter verarbeiten.
Code:
import java.util.Date;
public class TestDateTime{
FormatDateTime fdt;
private Date test;
public TestDateTime() {
test = fdt.formatDate("01.10.2005");
System.out.println("FormatDatetime: " + test);
}
public static void main( String[] args ){
TestDateTime test = new TestDateTime();
}
}
du hast doch selbst geschrieben für statische methoden braucht man keine instanz der klasse, warum also "fdt.formatDate("01.10.2005"); " (ganz davon abgesehen dass dir dort eh eine nullpointerexception fliegt weil du fdt nie instantiiert hast) ?
guckst du mal hier http://www.java-forum.org/de/viewtopic.php?t=7895
ja das Beispiel habe ich unter anderem auch gelesen. Auch wenn es nicht so aussieht, aber ich stecke noch nicht so tief in der Theorie. Deshalb habe ich auch das mit dem statisch noch nicht so richtig verstanden. Nach Deiner Antwort bin ich leider wieder sehr verwirrt.
Denn, ich habe das Beispiel so gemacht, da ich dachte, mit statischen Methoden keine Instanz bilden zu müssen. Das Beispiel funktioniert auch.
Vielleicht gibt es ja für einen Anfänger ein paar einfache Worte, was und wie das Beispiel richtig wäre. Das wäre sehr schön!
Danke !!!
Eclipse hilft mir so. Ist das korrekt?
Code:
import java.util.Date;
public class TestDateTime{
private Date test;
public TestDateTime() {
test = FormatDateTime.formatDate("01.10.2005");
System.out.println("FormatDatetime: " + test);
}
public static void main( String[] args ){
TestDateTime test = new TestDateTime();
}
}