泛型类声明时不带参数,泛型方法无法检测出参数的不合法?
class Father{
}
class Son extends Father{
}
public class GenericInherit<T> {
T data;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public void print(GenericInherit<Father> genericInherit){
System.out.println(genericInherit);
}
public static void main(String[] args) {`
GenericInherit<Father> genericInherit = new GenericInherit<>();
//GenericInherit genericInherit = new GenericInherit<>();
genericInherit.print(new GenericInherit<Son>());`
}
}
如果用注释里声明方式,可以顺利运行;按代码的方式,直接IDE就检测出类型问题了。这个方法和泛型类本身的泛型参数T不一样,为什么会出现这种情况?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为了兼容以前没有泛型的旧语法。
如果不使用泛型就不会检测泛型类型
这个地方可以将入参写为接口,通过调用
getData()
获取T
这数据