我已经学习并试验了Java Generics一段时间,但我遇到了一些我无法解释的问题.以下面的代码为例:
public class Question {
public <T> Sub<T> getSub(Class<T> c) {
return new Sub<T>(c);
}
public class Sub<S> {
private Class<S> c;
public Sub(Class<S> c) {
this.c = c;
}
public void add(S s) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
和测试代码:
import generics.Question.Sub;
public class Answer {
public static void main(String [] args) {
Question q = new Question();
Sub<String> s = q.getSub(String.class);
s.add("");
}
}
Run Code Online (Sandbox Code Playgroud)
当它运行时,它会给出一个非常神秘的错误消息:
C:\Answer.java:8: incompatible types
found : generics.Question.Sub<java.lang.String>
required: generics.Question.Sub<java.lang.String>
Sub<String> s = q.getSub(String.class);
1 error …Run Code Online (Sandbox Code Playgroud)