class Foo
{
public static Foo Create()
{
return new Foo();
}
}
|
Ich wollt doch schon sagen, dass hört sich aber nicht nach Java an :D aber dennoch wie immer eine treffende und richtige Antwort :)
– Dustin Klein 10.09.2009
|
||
Naja - ich wuerde sagen: gfoidl hat die Frage falsch verstanden - es geht doch um statische Blöcke, nicht um statische Methoden - in der Antwort von fenchurch ist ein Beispiel.
– cdaszenies 18.09.2009
|
||
Wenn ich das so betrachte hast du Recht wenn ein Block als Klasse definiert wird. Ich habs als Methode definiert (kann mit dem Begriff Block nicht anfangen).
– gfoidl 18.09.2009
|
private static final File tmpFile = File.createTempFile("foo", ".tmp");
private static final File tmpFile;
static {
try {
tmpFile = File.createTempFile("foo", ".tmp");
} catch (final IOException e) {
throw new RuntimeException(e);
}
}
|
Im Beispiel wäre eine ExceptionInInitializerError angemessen, siehe deren Javadoc.
– cdaszenies 18.09.2009
|
public class test
{
static int foo = 12345;
static
{
foo = 998877;
}
}
|
Der static Block einer Basisklasse wird auch beim Erzeugen einer Instanz einer Unterklasse aufgerufen, ähnlich wie der Default-Konstruktor, so er denn vorhanden ist und nicht durch super(x,y) ein andere Konstruktor angegeben wird. Static Blöcke kommen also auch in Unterklassen immer zum Einsatz, auch wenn sie nicht direkt vererbt werden. Konstruktoren werden im gleichen Sinne auch nicht wirklich vererbt.
– jenser78 18.09.2009
|
|
|
private static final Map<String, String> DATA_MAP;
static {
Map<String, String> tmp = new HashMap<String, String>();
tmp.put("a", "1");
tmp.put("b", "2");
DATA_MAP = tmp;
}
static {
try {
DriverManager.registerDriver(new JDBCDriver());
} catch (Exception e) {
}
}
|