Mam mały problem do przepykania.
Musi być taki kawałek kodu:
private Ask delegate;
//...
//w jakiejś metodzie np. konstruktor
setAskDelegate(Ask ask)
{
this.delegate = ask;
}
//...
//w innej metodzie wykonawczej
int result = -1;
do
try { result = action(); }
catch(IOException exc)
{
switch(delegate.ask("Your choice?", Ask.REPEAT, Ask.ABORT, Ask.IGNORE))
{
case REPEAT:
continue;
case ABORT:
//...
return;
case IGNORE:
break;
}
}
while(result < 0);
Chodzi o to, że muszę połączyć wyliczenie z interfejsem tak aby taki kod mógł się kompilować i działać.
W skrócie ma to działać podobnie jak interfejs dla listenerów, tyle że delegować uogólnioną metodę ask będącą zależnie od argumentu metody setAskDelegate() albo zapytaniem na konsoli, albo okienkiem typu messagebox, albo w ogóle jakąś interaktywną animacją (to nie ważne).
Przy czym nie może to być wykonane na żadnych stałych int, ale wyliczeniami i interfejsami i ewentualnie EnumSet jeżeli da się to zrobić jako kod uogólniony dla dowolnego wyliczenia i zbioru takich wartości.
Metoda ask() powinna zwracać element wyliczenia tak aby mogła zadziałać instrukcja switch.
Samo Ask może być klasą, interfejsem, wyliczeniem, zbiorem wyliczeń lub ich dowolną kombinacją.
Ma ktoś z was jakiś pomysł jak coś takiego wykombinować?
Szukałem gdzieś po wzorcach projektowych, ale nic pasującego jakoś nie znalazłem.