Chạy ví dụ echo từ Jshell [trùng lặp]

Sep 08 2020

Tôi đọc một ví dụ về đối số dòng lệnh như vậy:

public class Echo {
    public static void main (String[] args) {
        for (String s: args) {
            System.out.println(s);
        }
    }
}

Nó chạy đúng cách từ dòng lệnh, làm thế nào tôi có thể chạy nó từ Jshell?

jshell> Echo.main testing
|  created variable testing, however, it cannot be referenced until class main is declared

Nó báo lỗi không tham chiếu được.

Trả lời

2 aioobe Sep 08 2020 at 15:51

Bạn gọi nó như bất kỳ phương thức tĩnh nào khác:

Echo.main(new String[] { "hello", "world" });

Toàn phiên:

$ jshell
|  Welcome to JShell -- Version 11.0.8
|  For an introduction type: /help intro

jshell> public class Echo {
   ...>     public static void main (String[] args) {
   ...>         for (String s: args) {
   ...>             System.out.println(s);
   ...>         }
   ...>     }
   ...> }
|  created class Echo

jshell> Echo.main(new String[] { "hello", "world" });
hello
world

Lưu ý rằng bạn có thể khai báo mainphương thức của mình như sau:

public static void main(String... args) { ... }

Đây là mã nhị phân tương thích với String[] argscú pháp, nhưng sẽ cho phép bạn gọi nó như sau:

Echo.main("hello", "world");