dato un'interfaccia generica:generici Java, interfacce e vincoli di tipo
public interface I<E> {
public int interfaceMethod(E s);
}
e una classe generica che implementa l'interfaccia
public class A<T> implements I<T> {
private T val;
public A(T x) {
val = x;
}
public int interfaceMethod(T val) {
// looks like T should be of the same type as instance variable 'val'
return 0;
}
}
perché fa i seguenti lavori?
public class Run {
public static void main(String[] args) {
A a = new A<String>("hello");
System.out.println(a.interfaceMethod(100)); \\ returns 0
}
}
previsto Il parametro T
tipo di metodo interfaceMethod
come definito in class A
per vincolare il metodo di argomenti che hanno lo stesso tipo di quello fornito al costruttore di A
. (in questo caso String
).
Perché lo a.interfaceMethod
non richiede un argomento di tipo String
?
probabilmente perché non ha fatto il seguente 'A a = new A ("ciao");' ... –
beoliver
Oserei che il numero intero è implicitamente cast String http://stackoverflow.com/ domande/9159358/implicito-cast-to-string-tostring-and-int – JoSSte
http://stackoverflow.com/questions/2770321/che cosa-is-a-raw-tipo-e- e- perché -shouldnt-we-use- it –