Hi,
ich hatte in einer funktionalen Programmiersprache eine Abstraktionsmethode, die ich in Java sehr vermisse. Es geht darum, dass man einen Obertypen hat und beispielsweise drei Untertypen, die den Obertypen erweitern. Alle Untertypen haben einen Konstruktor, der eine Zahl vom Typ int akzeptiert. Je nachdem welcher int Value eingegeben wird, wird der passende Untertyp ausgewählt.
Daher meine Frage. Gibt es in Java doch eine Möglichkeit, dass die Klasse von einem Typ je nach Eingabe entscheidet welchen Typ es zur Laufzeit annimmt.
Ich möchte sowas schreiben wie:
Die einzige Möglichkeit, die mir sonst einfällt, wäre sowas:
Aber das sieht irgendwie hässlich aus.
ich hatte in einer funktionalen Programmiersprache eine Abstraktionsmethode, die ich in Java sehr vermisse. Es geht darum, dass man einen Obertypen hat und beispielsweise drei Untertypen, die den Obertypen erweitern. Alle Untertypen haben einen Konstruktor, der eine Zahl vom Typ int akzeptiert. Je nachdem welcher int Value eingegeben wird, wird der passende Untertyp ausgewählt.
Daher meine Frage. Gibt es in Java doch eine Möglichkeit, dass die Klasse von einem Typ je nach Eingabe entscheidet welchen Typ es zur Laufzeit annimmt.
Ich möchte sowas schreiben wie:
Java:
IntegerWrapper wrapper = new IntegerWrapper(int)
if (int==1) wrapper instanceof IntegerOneWrapper == true
if (int==2) wrapper instanceof IntegerTwoWrapper == true
if (int==3) wrapper instanceof IntegerThreeWrapper == true
Die einzige Möglichkeit, die mir sonst einfällt, wäre sowas:
Java:
private static IndexInteger getIndexInteger(int integer) {
switch (integer) {
case 0:
return new IndexIntegerOne();
case 1:
return new IndexIntegerTwo();
case 2:
return new IndexIntegerThree();
default:
throw new IllegalArgumentException();
}
}