我是大学新手Java程序员。我今天发现了一些破坏了我关于Java语法如何工作的概念。
public class testClass {
ArrayList <String> persons = new ArrayList <String> ();
public void run(){
Stream <String> personstream = persons.stream();
}}
在stream()
课程中找不到方法ArrayList
,但它可能看起来好像在那里。当我将鼠标移到Eclipse中的stream()
- 方法上时,它表示它是收集的一部分,但我在其在线文档中的任何地方都找不到stream()
方法。
如果stream()
方法不属于我从中调用它的类,为什么要调用它?
答案 0 :(得分:6)
您检查了正确的类和Java版本吗? Java 8的Collection
(不是Collections
)有stream()
default method,which is inherited by ArrayList
:
/**
* Returns a sequential {@code Stream} with this collection as its source.
*
* <p>This method should be overridden when the {@link #spliterator()}
* method cannot return a spliterator that is {@code IMMUTABLE},
* {@code CONCURRENT}, or <em>late-binding</em>. (See {@link #spliterator()}
* for details.)
*
* @implSpec
* The default implementation creates a sequential {@code Stream} from the
* collection's {@code Spliterator}.
*
* @return a sequential {@code Stream} over the elements in this collection
* @since 1.8
*/
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
答案 1 :(得分:3)
ArrayList实现Collection接口。此接口的方法为stream()
答案 2 :(得分:1)
方法stream()
是接口java.util.Collection
中定义的默认方法。查看java.util.Collection
的来源。
它使用splititerator()
上的方法java.util.ArrayList
来实现。
答案 3 :(得分:1)
这是有效的Java 8代码:
List<String> persons = new ArrayList<>();
Stream<String> stream = persons.stream();
List<T>.stream()
可用。