Статический импорт println()

Не понимаю, почему не работает такой импорт:

import static java.lang.System

Возникает ошибка.

Я хотел сделать импорт println удобным, чтобы не писать System.out...


Ответы (2 шт):

Автор решения: Nowhere Man

Статический импорт работает для доступа к статическим полям / методам, поэтому следует записать import static java.lang.System.*;, чтобы "сократить" написание System: out.println().

Методы print / println в классе PrintStream НЕ являются статическими, поэтому к ним статический импорт не применим.

Чтобы дополнительно сократить out.println, можно реализовать свой класс со статическими методами с краткими названиями, в которых будут вызываться соответствующие методы для System.out:

package my.util;

import static java.lang.System.*;

public class Out {
    public static p(Object obj) {
        out.println(obj);
    }

    public static f(String format, Object ... args) {
        out.printf(format, args);
    }
// ... и т.д.
}

Тогда можно импортировать статические методы уже из своего утилитарного класса:

import static my.util.Out.*;
import static java.util.Arrays.toString;

public class Main {
    public static void main(String ... args) {
        p("Hello World");                  // Out.p -> System.out.println
        f("My args %s%n", toString(args)); // Out.f -> System.out.printf
    }
}
→ Ссылка
Автор решения: anonymus

Создайте новый класс к примеру Helper с функциями которые должны упростить ввод

public class Helper {
    public static void println(Object line) {
        System.out.println(line);
    }
}

в классе в котором вы хотите использовать println

import static package_example.Helper.println;

после этого вы можете использовать пример

public class Main {
    public static void main(String[] args) {
        println("");
    }
}
→ Ссылка