Legg flg. kode på filen Testprogram.java
:
public class Testprogram { public static <T extends Comparable<T>> int maks(T[] a) { return 0; } public static void main(String... args) { A[] a = new A[1]; B[] b = new B[1]; C[] c = new C[1]; maks(a); maks(b); maks(c); } } class A implements Comparable<A> { public int compareTo(A a) { return 0; } } class B extends A {} class C implements Comparable<Object> { public int compareTo(Object o) { return 0; } }
Oppgaver:
maks(c);
gi en syntaksfeil. Se om du kan forstå feilmeldingen.maks(c);
Da er det ingen syntaksfeil og koden er kjørbar. Kjør koden. Det kommer
ingen utskrift. Poenget er å vise at det ikke kommer noen runtimefeil. Det betyr at typebegrensningen
<T extends Comparable<T>>
er tilstrekkelig for en type som oppyller
Definisjon 1.4.2
og subtyper av en slik type.
<T extends Comparable<? super T>>
i maks
-metoden.
Ta metodekallet maks(c);
tilbake. Da virker alt. Sjekk det.