Существует ли стандартный интерфейс, гарантирующий void main (аргументы String [])? - PullRequest
1 голос
/ 07 марта 2011

Я довольно новичок в java и ищу интерфейс, который просто гарантирует, что main (args) существует - например, подходит для запуска из командной строки с "java classname arg1 ... argN" - без выполнения дополнительных действий.,

Более формально, я думаю, что этого будет достаточно:

public interface App {

public static void main(String[] args);

}

Есть ли такой интерфейс в стандартных библиотеках, которые обычно находятся в JDK?

Я не могне найти формальной записи для «Приложения» или «Приложения» в книге «Ореховая скорлупа», а поиск в Google «основной интерфейс Java» ничего полезного не дает.

Заранее спасибо ...

Ответы [ 2 ]

11 голосов
/ 07 марта 2011

Интерфейсы не могут определять статические методы.Нет интерфейса, определяющего основной метод.

3 голосов
/ 07 марта 2011

Как говорили другие, у вас не может быть абстрактных статических методов.Я попытаюсь объяснить , почему .

Статический член прикреплен только к одному классу - тому, в котором он определен. Он не может быть унаследован.Проблема в том, что синтаксис Java заставляет его выглядеть так, как будто вы можете его унаследовать;если родительский класс A имеет статический метод f (), и вы пишете подкласс B, то вы можете вызвать метод следующим образом: B.f().Тем не менее, вы на самом деле звоните A.f().Это бессмысленное различие, если вы не сделаете что-то вроде этого:

class A {
    public static String s = "a";
    public static String f() { 
        return s;
    } 
}

class B extends A {
    public static String s = "b"; 
}

Здесь A.f() и B.f() оба возвратят «a».

Итак: если вы можете 't наследовать статический метод, тогда вы не можете переопределить его;и если вы не можете переопределить его, то делать его абстрактным было бы бессмысленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...