Почему я получаю «выражение получателя должно быть заменено определителем типа»?

#java #process

#java #процесс

Вопрос:

 $ javac Main.java 
    Main.java:27: error: illegal static interface method call
        ProcessHandle.current().allProcesses().mapToLong(w->w.pid()).forEach(System.out::println);
                                            ^
      the receiver expression should be replaced with the type qualifier 'ProcessHandle'
    1 error
  

Почему я получаю «выражение получателя должно быть заменено определителем типа ‘ProcessHandle'»?

Что мне делать вместо этого? Спасибо.


 import java.lang.System;
import java.io.File;
import java.io.IOException;
import java.util.stream.Stream;

public class Main {

    public static void main(String args[]){

    System.out.println("visible processes pids are: ");
    ProcessHandle.current().allProcesses().mapToLong(w->w.pid()).forEach(System.out::println);  

    }
}
  

Комментарии:

1. можете ли вы предоставить полный код Java. я ничего не могу сказать на основе этой ошибки.

2. Обновлено. Спасибо.

3. Вы не можете переопределить статические методы, но вы можете скрыть статические методы / члены.

4. Здесь вы пытаетесь переопределить ProcessHandle

Ответ №1:

Чего вы пытаетесь достичь здесь? Похоже, не имеет особого смысла запрашивать текущий дескриптор ProcessHandle, а затем использовать его для запроса allProcesses . Оба эти метода являются статическими. Вы, вероятно, хотите просто опустить «.current()».