source: Java_Quellcode_SOOP_Vorlesung/generics/BoxMain.java

Last change on this file was 265, checked in by tr, 8 years ago
File size: 1.3 KB
Line 
1package eu.hsrw.tr.prog.vl.generics;
2
3public class BoxMain {
4
5    public static void main(String[] args) {
6        Box b = new Box();
7
8        b.set("Hallo");
9        String s = (String) b.get();
10        System.out.println(s);
11/**/
12        b.set(42);
13        int x = (Integer) b.get();
14        System.out.println(x);
15/**/
16        Regal r = new Regal();
17        r.leftBox = new Box("hallo");
18        r.rightBox = new Box(42);
19        // Wir müssen wissen, welcher Typ in welcher Box des Regals liegt.
20        s = (String) r.leftBox.get();
21        x = (Integer) r.rightBox.get();
22
23/**/
24        StringBox sb = new StringBox();
25        sb.set("Hallo StringBox");
26        System.out.println(sb.get());
27/**/
28        IntBox ib = new IntBox();
29        // Warum funktioniert das Folgende?
30        // Es wird die überladene Methode set() aus Box aufgerufen
31        // --> unerwünschtes Verhalten, da der falsche Typ gespeichert werden
32        // kann
33        ib.set("Hallo IntBox");
34        // Jetzt wird die Methode set() aus IntBox aufgerufen
35        ib.set(42);
36        // Die Ausgabe funktioniert, da die Methode Box.get() Object liefert und die
37        // toString()-Methode den korrekten Integer-Wert ausgibt (Autoboxing).
38        System.out.println(ib.get());
39        // Das funktioniert nicht mehr, weil die Typen nicht kompatibel sind
40        // (Object und int)
41        @SuppressWarnings("unused")
42        int y = 10;
43        //
44        // Funktioniert nicht: int z = ib.get() + y;
45        //
46/**/
47    }
48}
Note: See TracBrowser for help on using the repository browser.