3 "Upper Bound Wildcards" anwenden

Submitted by javafrage on Sun, 03/19/2017 - 12:05

Nutzen Sie das Konzept einer „Upper bound wildcard“ um die generische Klasse Koordinate zu deklarieren, die man nur für die Javaklassen Byte, Float, Integer, Short, Long, Double konfigurieren kann.

Anbei ein Bild der Javaklassenhierarchie:

Klassenhierarchie Number

Vervollständigen Sie den Kopf der Klasse Koordinate:

public class Koordinate

{ // Rumpf ist nicht relevant für diese Aufgabe

}

Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 2 Minuten

 

 

Antwort zu Frage 2. : Generics, Typprüfung

Quellcode Beschreibung der Fehler
package Kurs2.Generics;

public class Flaeche<T extends Number> {
public T x;
public T y;

public Flaeche(T xp, T yp) {
x = xp;
y = yp;
}

public static void main(String[] a) {
Flaeche<Double> f1;
Flaeche<Double> f2;
Flaeche<Integer> f3;
Flaeche<Integer> f4;
Flaeche<Number> f5;
Flaeche<Number> f6;
Flaeche f7;
Flaeche f8;
Flaeche<?> f9;

f1 = new Flaeche<Double>(2.2d,3.3d);
f3 = new Flaeche<Integer>(2, 3);

f2 = f1;
//f2 = f3;

//f9 = new Flaeche<String>("11","22");
f5 = new Flaeche<Number>(2l, 3l);
f5 = new Flaeche<Number>(4.4d, 5.5f);
//f1 = new Flaeche<Double>(3.3f,9.9d);
f7 = new Flaeche(2.2f,3.3f);
f7 = new Flaeche<Number>(7.7f, 8.8f);
f8 = new Flaeche(7.7f, 8.8f);

f9 = f1;
f9 = f2;
//f1 = f9;
}
}

 

 

 

 

 


 

 

 






 

 

Ab hier ist mit Fehlern zu rechnen: 
Man darf keine Instanziierung von
Integer auf Double zuweisen
String ist keine Spezialisierung von Number


3.3f wird durch Autoboxing zu Instanz
von Float. Float leitet nicht aus
der Klasse Double ab

 



f9 muss ein Flaeche<Double> sein.
Keine sichere Zuweisung