überprüfen Sie die folgende Klasse aus:Constructing Objekt der allgemeinen Klasse von String in Java
public class Range<T extends Comparable<T>>
{
public T lower;
public T upper;
public Range(String range){
Scanner scanner = new Scanner(range);
if(scanner.hasNextInt())
this.lower = scanner.nextInt();
if(scanner.hasNextInt())
this.upper = scanner.nextInt();
}
public String toString(){
return lower + " - " + upper;
}
}
In Konstruktor, ich versuche, ein Objekt aus einem String zu erstellen. Werte, die das erstellende Objekt enthält, liegen im String-Bereich. Die Zeichenfolge hat ein Format wie eine Zeichenfolge, die von der toString-Methode zurückgegeben wird.
Dies wird nicht so einfach funktionieren, der Fehler ist in den letzten beiden Zeilen des Konstruktors, und es heißt: "Typenkonflikt: kann nicht von int in T. konvertieren" Natürlich ... Weil der T-Typ vom Benutzer entschieden wird und Scanner.nextInt() immer int zurückgibt. Selbst wenn das funktionieren würde, würde es nur funktionieren, wenn T int ist. Aber lassen Sie uns sagen, dass es mir gut geht, wenn es nur funktioniert, wenn T int ist.
Gibt es eine Möglichkeit, ein Objekt dieser Klasse mit einem solchen String zu konstruieren, nur wenn T int ist. Ich bezweifle, dass es etwas Ähnliches wie in C++ gibt.
Erhalten Sie, was ich will, sagen wir, dass die Zeichenfolge "5 - 10" ist. Ich will niedriger 5 und oberer 10 sein, und sie müssen ints sein. Jedenfalls möglich.
Wenn Sie nur Ints wollen, warum haben Sie einen generischen Typ? Mache einfach "nieder" und "oben" beide "int". – Tunaki
Warum möchten Sie ** Generics ** verwenden, wenn Sie den spezifischen Typ "int" haben? – developer
Ich habe diese Klasse für alle Typen gemacht, die vergleichbar sind, aber ich bekomme, dass dieser Konstruktor nur funktionieren kann, wenn Mitglieder Intars sind. Wenn T's floats sind, würde ich gerne einen speziellen Range (String Bereich) für diesen Fall machen. – Scarass