IntStream奇怪的错误

hos*_*yni 6 java arrays integer compiler-errors java-stream

Java 8有一个名为的新接口IntStream.我用它的of()静态方法遇到了一个奇怪的错误:

这种静态的接口IntStream方法只能作为访问IntStream.of

但正如您在下面的代码中看到的那样,我确切地使用过 IntStream.of

import java.util.stream.IntStream;

public class Test {

    public static void main(String[] args) {
        int[] listOfNumbers = {5,4,13,7,7,8,9,10,5,92,11,3,4,2,1};
        System.out.println(IntStream.of(listOfNumbers).sum());
    }

}
Run Code Online (Sandbox Code Playgroud)

此外,如果您检查API,您将看到该方法已经以我使用的类似方式声明.

Ole*_*Ole 5

您需要将项目设置为使用Java 8.例如,如果您使用的是maven,请将以下代码段放在您的pom中:

 <build>
      <pluginManagement>
           <plugins>
                <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-compiler-plugin</artifactId>
                     <version>3.2</version>
                     <configuration>
                          <source>1.8</source>
                          <target>1.8</target>
                     </configuration>
                </plugin>
           </plugins>
      </pluginManagement>
 </build>
Run Code Online (Sandbox Code Playgroud)


Old*_*eon 3

尽管IntStream.of(int...)似乎有效,但您更有可能使用Arrays.stream(int[])

public void test() {
    int[] listOfNumbers = {5, 4, 13, 7, 7, 8, 9, 10, 5, 92, 11, 3, 4, 2, 1};
    // Works fine but is really designed for ints instead of int[]s.
    System.out.println(IntStream.of(listOfNumbers).sum());
    // Expected use.
    System.out.println(IntStream.of(5, 4, 13, 7, 7, 8, 9, 10, 5, 92, 11, 3, 4, 2, 1).sum());
    // Probably a better approach for an int[].
    System.out.println(Arrays.stream(listOfNumbers).sum());
}
Run Code Online (Sandbox Code Playgroud)