之间有什么区别?Java泛型中的对象和对象?
我正在使用Eclipse来帮助我清理一些代码以正确使用Java泛型。大多数时候,它在推断类型方面做得非常出色,但是在某些情况下,推断类型必须尽可能地通用:对象。但是Eclipse似乎给了我一个选择,可以选择对象类型还是“?”类型。
那么两者之间有什么区别?
HashMap<String, ?> hash1;
和
HashMap<String, Object> hash2;
-
HashMap<String, String>
匹配项的实例,Map<String, ?>
但不是Map<String, Object>
。假设您要编写一个接受Strings到任何内容的映射的方法:如果您要编写public void foobar(Map<String, Object> ms) { ... }
您无法提供
HashMap<String, String>
。如果你写public void foobar(Map<String, ?> ms) { ... }
有用!
在Java的泛型中有时会被误解的是,
List<String>
它不是的子类型List<Object>
。(但String[]实际上是的子类型Object[],这是泛型和数组不能很好混合的原因之一。(Java中的数组是协变的,泛型不是,它们是不变的))。示例:如果您想编写一个接受
List
的的的InputStreams
和的子类型的方法InputStream,则可以编写public void foobar(List<? extends InputStream> ms) { ... }
顺便说一句:当您想了解Java中不那么简单的内容时,Joshua Bloch的Effective Java是很好的资源。(您的上述问题也在书中很好地涵盖了。)
-
有什么区别?Java泛型中的对象和对象?
2021-02-02 关注 0 浏览85 1答案
-
Java中的HashMap和Map对象之间有什么区别?
2021-02-02 关注 0 浏览82 1答案
-
python对象和json对象之间有什么区别?
2021-01-29 关注 0 浏览83 1答案
-
本机对象和宿主对象之间有什么区别?
2021-02-02 关注 0 浏览97 1答案
-
C ++和Java中的“泛型”类型之间有什么区别?
2021-01-30 关注 0 浏览116 1答案
-
Java中的引用和对象有什么区别?
2021-01-30 关注 0 浏览109 1答案
-
C#和Java…中的泛型与C ++中的模板之间有什么区别?
2021-02-02 关注 0 浏览135 1答案
-
JSON和JavaScript对象之间有什么区别?
2021-02-02 关注 0 浏览106 1答案
-
使用Mokito时,实际对象和模拟对象之间有什么区别?
2021-01-31 关注 0 浏览93 1答案
-
Python字典和Javascript对象之间有什么区别?
2021-01-29 关注 0 浏览453 1答案