Skip to Content

2. Generics: Typprüfung

Die generische Klasse Flaeche hat eine main() Methode mit einer Reihe Fehlern. Kommentieren im Quellcode jede Zeile aus, die der Übersetzer nicht übersetzt.

  • Schreiben Sie hierzu ein Kommentarzeichen („//“) direkt vor die inkorrekte Zeile im Quellcode.
  • Geben Sie hinter der fehlerhaften Zeile eine kurze Erklärung warum die Zeile inkorrekt ist.

Beispiel:

// int i = null;// null ist ein Referenztyp der nicht zu int passt
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:



















 

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

Niveau 2
Schwierigkeitsgrad mittel
Zeit 8 Minuten

Antwort zu Frage 1. : Generics, Typprüfung

public class Punkt<T extends Number> {
   public T x;
   public T y;
 
   public Punkt(T xp, T yp) {
    x = xp;
    y = yp;
   }

public static void main(String[] args) {
   Punkt<Double> k11;
   Punkt<Double> k12;
   Punkt<Integer> k21;
   Punkt<Integer> k22;
   Punkt<Number> k41;
   Punkt<Number> k42;
   Punkt k55;
   Punkt k66;
 
   k11 = new Punkt<Double>(2.2d, 3.3d);
   k21 = new Punkt<Integer>(2, 3);
   //k31 = new Punkt<String>("11","22"); Variable wurde nicht deklariert
   k41 = new Punkt<Number>(2l, 3l);
 
   k41 = new Punkt<Number>(4.4d, 5.5f);
   //k11 = new Punkt<Double>(3.3f,9.9d); 3.3.f ist ein Float und kein Double wie gefordert
 
   Punkt<?> k99;
   k99 = k11;
   k99 = k21;
   //k99 = k31; k31 wurde nicht deklariert
 
   k12 = k11;
   //k12 = k21; k12 hat Parameter Double, k21 hat Parameter Integer
   ...
   k55 = new Punkt<Number>(7.7f, 8.8f);
   k66 = new Punkt(7.7f, 8.8f);
   }
}


blog | by Dr. Radut