泛型继承 +收藏+方法=问题
我对泛型和集合有一些问题。 Java 仅在编译级别支持泛型。所以我们不能使用情况 B。
{
foo(new HashSet<I>()); //case A
foo(new HashSet<C>()); //case B: wrong
}
void foo(Set<I> set){}
class C implements I{}
interface I {}
那么我们如何将函数 foo 与 Set< 一起使用呢? C>范围?
谢谢。
I have some problem with generics and collection. Java support generics only at compilation level. So we can't use case B.
{
foo(new HashSet<I>()); //case A
foo(new HashSet<C>()); //case B: wrong
}
void foo(Set<I> set){}
class C implements I{}
interface I {}
So how we can use function foo with Set< C > parameter?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
通过更改 Foo 的签名:
您将无法向
foo
内的集合添加值,但您将能够迭代它们或检查包含情况。By changing the signature of Foo:
You won't be able to add values to the set within
foo
, but you'll be able to iterate over them or check for containment.乔恩·斯基特是对的。但是,如果您确实需要添加一些内容,您可以编写一个通用函数
Jon Skeet is right. If you did need to add something, however, you could write a generic function