首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中,Enumeration<?>是什么意思?

在java中,Enumeration<?>是什么意思?
EN

Stack Overflow用户
提问于 2011-10-13 09:32:19
回答 4查看 4.7K关注 0票数 3

Enumeration<?>是什么意思?

有没有办法来表示一般的泛型?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-13 09:53:45

<?>语法是java用来指定泛型类型是“无界的”--即它可以是“任何东西”的方式。

Enumeration<?>是一个具有“无界类型”的枚举--您可以将任何类型的枚举赋给这样的变量,例如:

代码语言:javascript
复制
Vector<String> v = new Vector<String>();
Enumeration<String> es = v.elements();
Enumeration<?> e = es; // This assignment compiles OK

但是,由于Enumeration<?>的nextElement()方法是无界的,返回类型为Object (即使它实际上是一个Enumeration<String>),因此您可能必须强制转换:

代码语言:javascript
复制
String s = (String)e.nextElement(); // Unsafe cast - compiler warning

对于后台,Enumeration是一个具有两个方法hasMoreElements()nextElement()的类型化接口。这是一次早期的(糟糕的)尝试,后来被IterableIterator取代。一些老的类使用它,比如VectorStringTokenizer

票数 3
EN

Stack Overflow用户

发布于 2011-10-13 09:36:19

问号表示它代表所有类型。这是一个example

除了具体的实例化之外,还有所谓的通配符实例化。它们没有具体的类型作为类型参数,而是所谓的通配符。通配符是带有“?”的语法结构。这不仅仅意味着一种类型,而是一系列类型。通配符最简单的形式就是一个问号,代表“所有类型”。

示例(通配符参数化类型):

public void printPair( pair) { System.out.println("("+pair.getFirst()+","+pair.getSecond()+")");} Pair limit =新的Pair ("maximum",1024L);printPair(limit);

票数 2
EN

Stack Overflow用户

发布于 2011-10-13 09:53:55

虽然很容易认为?表示"any“或"all”类型,但它实际上指定了一个未知类型。如果它真的是"any",你会认为这是可行的:

代码语言:javascript
复制
List<?> l = ...
l.add("foo");
l.add(new Date())

这是因为在这段代码中类型是未知的,所以编译器无法判断是否应该允许您向其添加任何内容。

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

https://stackoverflow.com/questions/7748450

复制
相关文章

相似问题

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