Выполнить основной метод внутри внутреннего класса - программирование
Подтвердить что ты не робот

Выполнить основной метод внутри внутреннего класса

Как выполнить основной метод, если он присутствует в статическом внутреннем классе?
Основной метод присутствует в статическом внутреннем классе, и нам нужно выполнить этот основной метод.

class A {
     static class B {
          public static void main(String[] args) {
             System.out.println("Done");
          }
     }
}
4b9b3361

Ответ 1

Попробуйте что-то вроде этого:

  java A$B

Обновление согласно комментариям:

В оболочке Linux вы должны выйти из $. Итак, команда стала:

java 'A$B'

Ответ 2

Его просто как простой класс. Команда запуска java A$B Когда внутренний класс скомпилирован, он добавляется к имени внешнего класса В этом случае вы получаете два файла класса. т.е. A.class и A$B.class

  • java команда принимает имя класса как аргумент, а не имя файла
  • Так простая команда java A$B выполнит работу
  • Если у вас есть анонимные классы, тогда имена классов будут похожи на OuterClass$1, OuterClass$1 и т.д.

Итак, если вы измените свой пример следующим образом, теперь включите анонимные и локальные внутренние классы метода

import java.io.Serializable;

public class A {
    static class B {
        public static void main(String[] args) {
            System.out.println("Done");
            Serializable obj = new Serializable() {
            };
            Serializable obj1 = new Serializable() {
            };
            class MethodLocalClass {
            }                                           
        }
    }
}

Тогда файлы классов, которые вы получите, это A.class, A$B.class, A$B$1.class, A$B$2.class для анонимных классов и A$B$1MethodLocalClass.class.

Надеюсь, что этот пример немного помогает:)

Ответ 3

Если ваш файл .java содержит внутренние/вложенные классы, пост-компиляция генерируется компилятором как TheClass $xxx.class.

Смотрите this:

Внутренние определения классов производят дополнительные файлы классов. Эти классы файлы имеют имена, объединяющие имена внутренних и внешних классов, такие как MyClass $MyInnerClass.class.

Итак, вы должны сделать: java A$B.

Ответ 4

Если вы хотите запустить класс с java (Java launcher: java test.MyClass), то этот класс должен иметь основной метод с хорошо известной сигнатурой.

У вас может быть основной метод с той же подписью в любом месте. Но не ожидайте, что пусковая установка найдет его.

P.S. Имя языка - Java, а не JAVA.

Есть небольшая деталь:

Вы можете сделать это:

package test;

public class Test {

    /**
     * @param args the command line arguments
     */
    static public class A {

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

java test.Test $A

но это не стандартно...