首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java泛型参数之间的区别

Java泛型参数之间的区别
EN

Stack Overflow用户
提问于 2010-07-07 22:58:06
回答 1查看 391关注 0票数 2

传入泛型参数和不带泛型参数的泛型类有什么区别?

示例:

简单的泛型类:

代码语言:javascript
复制
public class Foo<T> { /*...*/ }

简单类扩展了简单泛型类,将泛型参数设置为一些不相关的类型:

代码语言:javascript
复制
public class FooFoo extends Foo<Type1> { /*...*/ }

另一个泛型类

代码语言:javascript
复制
public class Bar<T> extends FooFoo { /*...*/ }

作为泛型参数的基类需要扩展类Foo

代码语言:javascript
复制
public class TestFooClass<T extends Foo<?>> { /*...*/ }

问题是这两个参数之间的差异是什么?

代码语言:javascript
复制
public class BarTestOne extends TestFooClass<Bar> { /*...*/ }

public class BarTestTwo extends TestFooClass<Bar<?>> { /*...*/ }

问题

代码语言:javascript
复制
Class<T> class = (Class<T>) ((Foo)getClass().getGenericSuperclass()).getActualTypeArguments()[0];

在第一种情况下,代码可以在第二种情况下工作。

EN

回答 1

Stack Overflow用户

发布于 2010-07-07 23:22:34

例如,如果你有一个List,你可以添加它,如果你有一个List<?>,你不能添加,因为编译器不知道你的对象是否与对象的“实际泛型类型”兼容。

至于反射代码,我不知道。它显示getClass(),这取决于您调用它的对象;在本例中,对象显然是this……这段代码是从哪里调用的?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3195987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档