cung cấp một giao diện chung:Java Generics, giao diện và loại hạn chế
public interface I<E> {
public int interfaceMethod(E s);
}
và một lớp chung mà thực hiện giao diện
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;
}
}
tại sao các công việc sau đây?
public class Run {
public static void main(String[] args) {
A a = new A<String>("hello");
System.out.println(a.interfaceMethod(100)); \\ returns 0
}
}
tôi mong đợi các tham số T
loại phương pháp interfaceMethod
theo quy định tại class A
để hạn chế các phương pháp để lập luận rằng có các loại tương tự như cung cấp cho các nhà xây dựng của A
. (trong trường hợp này là String
).
Tại sao a.interfaceMethod
không yêu cầu đối số loại String
?
có lẽ vì tôi không làm như sau 'A a = new A (" hello ");' ... –
beoliver
Tôi sẽ mạo hiểm rằng số nguyên được ngầm đúc đến chuỗi http://stackoverflow.com/ câu hỏi/9159358/implicit-cast-to-string-tostring-and-int – JoSSte
http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use- nó –