Можно ли печатать сообщение на консоли без основного и статического блоков в java?

В интервью я задал этот вопрос: не используя статические и основные, как мы можем печатать сообщение на консоли? Возможно ли это?

Ответ 1

Вы можете определить пользовательский загрузчик классов, который печатает ваше сообщение:

public class MyClassLoader extends ClassLoader {
    public MyClassLoader(ClassLoader other) {
         super(other);
         System.out.println("Hi there");
         System.exit(0);
    }
}

Затем запустите команду java:

java -Djava.system.class.loader=MyClassLoader

(не нужно добавлять класс в качестве параметра)

Ответ 2

I have asked this question:Without using static and main how could we print
message on console?Is it possible?

Ответ: Нет!

Вы ничего не можете выполнить, если не вызван метод main(). До Java 7 классы были загружены до того, как был найден метод main(). Таким образом, вы можете печатать свои данные через статические блоки (статический блок запускается при загрузке классов), но из java 7 вперед даже это невозможно. Поэтому вам всегда нужно сначала выполнить метод main().

Даже в таких системах, как Spring beans, как правило, инициализируются только тогда, когда на него ссылается контекст (снова требуется main(), чтобы он выполнялся первым). Так что вы не можете печатать что-то на консоль без вызова main ( ) или через статические функции/блоки.

Ответ 3

Java - это язык ООП.

Вы не можете создать программу, не создавая класс и добавляя статическую основную функцию.

Затем вы можете вызвать System.out.println для печати строки.

Итак, ответ - нет.

Ответ 4

Вам всегда нужно положить syso в блок кода, возможно:

public class example { public void message(){ System.out.println("Hello"); } }

Здесь метод не статичен

Ответ 5

public class Test {
    public static PrintStream ps = System.out.printf("%s", "hello");
}

Довольно странный вопрос для интервью. Он будет печатать привет и бросать Exception in thread "main" java.lang.NoSuchMethodException.

Ответ 6

Ответ определенно Нет.

По крайней мере, вам нужен статический блок или вам нужен пустой main().

См. приведенные ниже примеры:

1.

public class ABC {
    static{
             System.out.println("hai");
          }
    public static void main(String[] args) {}
}

ВЫВОД:

хаи

2.

public final class ABC {
    static{
             System.out.println("hai");
          }
}

Он будет печатать "hai" во время работы, но после этого также произойдет одно исключение.

ВЫВОД:

java.lang.NoSuchMethodError: main

хаи

Исключение в потоке "main"

Ответ 7

возможно со статическим блоком, который выполняется перед основным методом

Ответ 8

@Аникет Тхакур Поскольку я не могу прокомментировать из-за моих моментов. но следующие программы печатают сообщение, прежде чем он войдет в main. ПРИМЕЧАНИЕ. Я использовал Java 7 и Java 8. оба работают нормально и запускают статический блок перед основным.

public class PrintBeforeMain {

    private static int i = m1(); 

    public static int m1(){ 
        System.out.println("m1(): Before main() through static method..."); 
        return 0; 
    }

    static{
        System.out.println("Inside standalone static{} block");
    }

    public static void main(String[] args) {
        System.out.println("Inside main()");
    }
}