Hi
Ich habe folgende Frage in einem C/C++ Forum gesehen (die haben da auch nebenher einen Java-Bereich):
"
Hallo,
ich habe Code von etwa dieser Struktur:
[Java]
public abstract class Executor {
final public void execute() {
init();
//...
shutdown();
}
abstract void init();
abstract void shutdown();
}
[/Java]
Da es in meinem konkreten Fall keinen Sinn macht, init() oder shutdown() außerhalb von execute() aufzurufen, sondern eher sogar Mist dabei rauskommen kann, würde ich gerne init() und shutdown() vor diesen Aufrufen von außen (d.h. außerhalb execute()) schützen.
So wie es da steht, können natürlich noch Klassen im selben package die Methoden aufrufen, d.h. das geht so nicht. Mit private davor würde es auch nicht gehen, da abstract und private sich ausschließen. Public geht sowieso nicht, klar, und protected ist natürlich auch nicht zweckmäßig.
Gibt es irgendeine Möglichkeit wie ich das Problem lösen kann? Ich würde meinen, dass so etwas häufiger vorkommt, also was sind die "best practices" damit umzugehen?
Danke schonmal.
Mfg,
Christoph
"
Mir ist dazu leider keine gute Idee gekommen wie man das machen könnte. Ich habe auch den Verdacht, dass dies gar nicht möglich. Bevor ich aber solche Behauptungen bekannt machen möchte würde ich gerne die Experten hier Fragen, da es mich gerade interessiert ;-)
Ich habe folgende Frage in einem C/C++ Forum gesehen (die haben da auch nebenher einen Java-Bereich):
"
Hallo,
ich habe Code von etwa dieser Struktur:
[Java]
public abstract class Executor {
final public void execute() {
init();
//...
shutdown();
}
abstract void init();
abstract void shutdown();
}
[/Java]
Da es in meinem konkreten Fall keinen Sinn macht, init() oder shutdown() außerhalb von execute() aufzurufen, sondern eher sogar Mist dabei rauskommen kann, würde ich gerne init() und shutdown() vor diesen Aufrufen von außen (d.h. außerhalb execute()) schützen.
So wie es da steht, können natürlich noch Klassen im selben package die Methoden aufrufen, d.h. das geht so nicht. Mit private davor würde es auch nicht gehen, da abstract und private sich ausschließen. Public geht sowieso nicht, klar, und protected ist natürlich auch nicht zweckmäßig.
Gibt es irgendeine Möglichkeit wie ich das Problem lösen kann? Ich würde meinen, dass so etwas häufiger vorkommt, also was sind die "best practices" damit umzugehen?
Danke schonmal.
Mfg,
Christoph
"
Mir ist dazu leider keine gute Idee gekommen wie man das machen könnte. Ich habe auch den Verdacht, dass dies gar nicht möglich. Bevor ich aber solche Behauptungen bekannt machen möchte würde ich gerne die Experten hier Fragen, da es mich gerade interessiert ;-)