Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';<;之间的区别是什么&燃气轮机;以及<;?扩展对象>;在Java泛型中?_Java_Syntax_Generics - Fatal编程技术网

什么';<;之间的区别是什么&燃气轮机;以及<;?扩展对象>;在Java泛型中?

什么';<;之间的区别是什么&燃气轮机;以及<;?扩展对象>;在Java泛型中?,java,syntax,generics,Java,Syntax,Generics,我以前见过通配符用于表示任何对象,但最近看到了以下用法: <? extends Object> 和虽然应该是的快捷方式,但是是可修改的; 但这是一个错误 List aList = new ArrayList<>(); boolean instancetest = aList instanceof List<? extends Object>; List aList=new ArrayList(); boolean instancetest=aList i

我以前见过通配符用于表示任何对象,但最近看到了以下用法:

<? extends Object>
虽然
应该是
的快捷方式,但是
是可修改的;
但这是一个错误

List aList = new ArrayList<>();
boolean instancetest = aList instanceof List<? extends Object>;
List aList=new ArrayList();

boolean instancetest=aList instanceof List
的缩写,意思是任何东西。因此,它可以接受不是从
对象
类继承的类型

<? extends Object>

T–用于表示类型
E–用于表示元素
K–键
V-值
N–对于数字


这是一样的。如果您搜索“?扩展对象”,请参见@Dan,在该问题中您没有找到任何内容。我正在通读答案,看看我是否能推断出什么,但我不认为这就是答案。具体来说,它不是在谈论泛型。@Dan-这是一个不同的问题。我以前见过这个问题,我记得至少提到了一个微妙的区别。让我看看我是否能找到它。如果你找到它,它也不是这个:现在我们开始:可能的重复(凯文·布瑞利翁的回答不正确)我不清楚这个例子是如何关联的?(因为它既不使用nor,也不使用@orbfish:它只与我认为你会发现它有趣有关,因为它是一个
扩展对象
实际上是有意义的例子。如果我错了,那么我道歉。希望其他遇到你的问题的人会感兴趣,至少。@ruakh-对有界通配符感兴趣她不是类型参数,但是,至少,你回答了。你应该在你最初的帖子中说明这一点。这样,他的答案可能对你更相关。如果编译器将列表转换为列表,那么列表如何可重新定义,从而丢失了关于类型的信息?我相信是为向后兼容leg而设计的acy API。与和区分“因此它可以接受不是从对象类继承的类型”,但所有Java类都是从
对象
类继承或隐式继承的。
List aList = new ArrayList<>();
boolean instancetest = aList instanceof List<? extends Object>;
<?>
ArrayList<?> unknownList = new ArrayList<Number>(); //can accept of type Number
unknownList = new ArrayList<Float>(); //Float is of type Number
<? extends Object>
ArrayList<? extends Number> numberList = new ArrayList<Number>(); //Number of subclass
numberList = new ArrayList<Integer>(); //Integer extends Number
numberList = new ArrayList<Float>(); // Float extends Number