java - 无法理解 Java 通配符的用法?

标签 java generics

<分区>

假设我有以下代码片段

Number n=new Integer(2);

然后当我使用代码时,它显示错误

Class<Number> hi=n.getClass(); //type mismatch error

但是如果下面的代码工作正常

Class<? extends Number> hi=n.getClass();

为什么会这样?请用一些简单而准确的词来解释。

最佳答案

嗯,Integer 的类是Class<Integer>这不同于 Class<Number> .因为n可以包含任何类型的 Number , 它的类可以是扩展 Number 的任何类.

关于java - 无法理解 Java 通配符的用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344327/

相关文章:

swift - 了解常规版本和通用版本之间的函数调用优先级

java - 仅在 Catch block 中编写记录代码而不处理行为会对程序性能产生什么样的影响?

java - 在 Java 流中插入值

java - 用 JSF 反向 Ajax?

java - System.currentTimeMillis()/1000 如何在 JAVA 中工作

java - 有没有办法在父类(super class)中定义泛型方法来引用继承类的类型?

java - 在面向对象编程中获取特定类的所有对象

c# - 如何从继承自 CollectionBase 的类重构为泛型?

c# - 用于计算列表中给定子类出现次数的通用方法以及未找到 Type 参数的原因

c# - 如何使用反射调用泛型方法?