Wenn im Konstruktor eine Exception ausgelöst wird, die ich dort nicht behandeln kann, will ich eine null-Referenz zurückgeben - mit return geht das aber nicht... Weiß jemand Rat?
gute frage - ich würde eher die geworfene Exception weitergeben - also an die methode, die das Objekt instanzieren will....
Code:
public class Achnoe {
public Achnoe() throws Exception {
// tu irgendwas;
}
public static void main(String[] args) {
try {
new Achnoe();
}
catch(Exception e) {
// shit nicht geklappt;
}
}
die Antwort gibt das Singleton-Pattern. Leicht abgeändert kann man
es dann so machen.
Code:
public class Test {
private Test(Object someArgument){
// ...
}
public Test newInstance(Object someArgument){
try{
// do something
// if no Exception
return new Test(someArgument);
}
catch(Exception e){
return null;
}
}
}
Wobei das aber der Definition von Singelton nicht ganz entspricht, da man von der Klasse mehrere Instanzen erzeugen kann.
Wenn Singelton (übrigens eine gute Idee), dann so:
Code:
public class Test {
private static Test test = null;
private Test(Object someArgument){
// ...
}
public Test newInstance(Object someArgument){
try{
// do something
// if no Exception
if(test == null) {
test = new Test(someArgument);
}
}
catch(Exception e){
return null;
}
return test;
}
}
Rene, das was du gepostet hast, ist nicht exakt was ich suche, aber ein verdammt guter Denkanreiz! Vielen Dank!
deathbyaclown: Ich bastel an einer Singleton-Klasse, die über eine statische Methode instanziiert wird - weiterreichen ist leider nicht möglich. Hätte ich vielleicht dazusagen sollen ...
Wobei das aber der Definition von Singelton nicht ganz entspricht, da man von der Klasse mehrere Instanzen erzeugen kann.
Wenn Singelton (übrigens eine gute Idee), dann so:
Code:
public class Test {
private static Test test = null;
private Test(Object someArgument){
// ...
}
public Test newInstance(Object someArgument){
try{
// do something
// if no Exception
if(test == null) {
test = new Test(someArgument);
}
}
catch(Exception e){
return null;
}
return test;
}
}
wenn du meins richtig gelesen hättest, hättest du den Satz "Leicht abgeändert kann man
es dann so machen" bemerkt.
Ich weiß auch das dies kein Singleton ist, aber das Prinzip ist das selbe. Mache den Konstruktor private und lass
die Instanzierung nur über statische Methoden zu. Ob diese dann Bedingungen prüfen und bei gelingen ein
Objekt zurückgeben oder sogar die Anzahl der erzeugten Objekte kontrollieren ist doch erst einmal egal.
Ist nicht böse gemeint, wollte das nur klar stellen. :lol: