- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
有时,很多次我在文档中看到这种情况。这让我想知道要输入什么。有人可以用清晰的简化文字向我解释这句话的意思吗:D。这是怎么回事:
ArrayList(Collection<? extends E> c)
最终被用作:
new ArrayList<>(Arrays.asList("a","b","c"));
所以我不需要再通过谷歌搜索来问这个“问题”,而是能够自己弄清楚。
最佳答案
语法 ? extends E
意思是“某种类型,要么是 E 要么是 E 的子类型”。 ?
是通配符。
代码Arrays.asList("a","b","c")
推断返回 List<String>
, 和 new ArrayList<>
使用菱形运算符,因此会产生 ArrayList<String>
.
通配符允许您推断子类型——您可以将其分配给具有父类(super class)型的引用变量:
List<CharSequence> list = new ArrayList<>(Arrays.asList("a","b","c"));
在这里,E
被推断为 CharSequence
而不是 String
,但这行得通,因为 String
是 CharSequence
的子类型.
关于java - 这到底是什么意思 Collection<?延伸 E> c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554839/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!