首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解Java中泛型的语法

理解Java中泛型的语法
EN

Stack Overflow用户
提问于 2012-12-27 13:51:45
回答 1查看 117关注 0票数 0

我开始研究Java-泛型。我对泛型语法及其含义有一些误解。如果我的问题显得过于琐碎,我恳请谅解。

  1. 你可以写: 公共类MyClass {}
  2. 你可以写: 公共类MyClass {}
  3. 你也可以写: 公共课程MyClass<?扩展SomeClass> {}

这些情况下的区别是什么?

  1. 第一种情况对我来说是绝对清楚的:您可以使用SomeClass实例和他的子类实例作为MyClass的类参数。
  2. 我认为在这种情况下,您只能使用MyClass的子类实例
  3. 同样:只使用MyClass的子类实例作为MyClass的类参数。

我的猜测对不对?特别是第二例和第三例的使用有什么区别?

谢谢您的解释!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-27 14:00:07

区别在于不能在泛型类声明中使用?

代码语言:javascript
运行
复制
public class MyClass<? extends SomeClass> {} // this isn't valid  

上述声明将导致编译器错误。

From Documentation:

泛型类的定义格式如下: 类名{ /* . */ }由尖括号(<>)分隔的类型参数部分在类名后面。它指定类型参数(也称为类型变量) T1、T2、.和Tn。

代码语言:javascript
运行
复制
public class MyClass<C extends SomeClass> {} 

在这个声明中,C是一个类型参数,它可以是SomeClass类型,也可以是它的任何子类。

示例:

代码语言:javascript
运行
复制
Class SomeOtherClass extends SomeClass {
}

MyClass clazz = new MyClass<SomeOtherClass>();
MyClass clazz = new MyClass<SomeClass>(); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14055761

复制
相关文章

相似问题

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