Deb*_*Ray 3 java java-8 java-stream
在进行流操作时,
int sum = list.stream().filter(i -> i > 0).mapToInt(i -> i).sum();
得到a中所有正数的总和list,我们Stream<Integer>在中间阶段使用a ,但这不需要导入java.util.stream.Stream.
现在,做同样的事情,当我写作时,
Stream<Integer> stream = list.stream();
int sum = stream.filter(i -> i > 0).mapToInt(i -> i).sum();
Run Code Online (Sandbox Code Playgroud)
它产生完全相同的结果,但我需要,import Stream因为我声明的变量需要该类型.
那么,为什么list.stream()我提到的第一种方式中的部分不需要我导入Stream?我可能会遗漏一些非常基本的东西,但如果有人能够指出,我会非常感激.
Ste*_*n C 12
如果您在源代码中使用非限定标识符明确命名类标识符,则只需导入类标识符.
(也有例外......)
该import声明的目的是消除歧义; 即在...
Stream<Integer> stream = ...
Run Code Online (Sandbox Code Playgroud)
标识符Stream引用哪个类?
java.util.stream.Stream?一种import说法可以说是哪一个.
例子.
1)Stream该类未在源代码中命名
// no import required
int sum = list.stream().filter(i -> i > 0).mapToInt(i -> i).sum();
Run Code Online (Sandbox Code Playgroud)
请注意,这里没有歧义.编译器知道stream()调用结果的完整类名.编译列表类时已解析全名,并且它已嵌入到类文件中.
2)Stream该类以其完全限定名称命名:
// no import required
java.util.stream.Stream<Integer> stream = list.stream();
Run Code Online (Sandbox Code Playgroud)
3)Stream该类以不合格的名称命名:
// import required
Stream<Integer> stream = list.stream();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |