Какова роль класса, в который обернут основной метод? - PullRequest
0 голосов
/ 20 декабря 2018

Поскольку мы знаем, что метод main является точкой входа в программу Java, как описано в следующих ресурсах:

Почему метод main () необходим в главном классе Java?

Почему main должен присутствовать в классе Java?[duplicate]

Если это так, то зачем нам оборачивать метод main в классе, если метод main является точкой входа?

enter image description here

Какова роль class, который охватывает метод main?

Ответы [ 4 ]

0 голосов
/ 20 декабря 2018

Поскольку, в отличие от других языков, в Java нет функций .

Java знает только методы .

Разница: метод привязан к классу, а функции - нет.

Следовательно, для запуска метода first с, эта вещь все еще метод и нуждается в включающем классе.

Другими словами: в java единственный способ дать имя некоторому коду - это превратить его в метод.(и вы действительно хотите, чтобы у вашей «отправной точки» было имя) И методы должны входить в класс, который является неявным при взгляде на спецификацию языка Java (глава 8.2, члены класса ).

0 голосов
/ 20 декабря 2018

Весь код находится в файле .class, хотя для этого метода может быть сделано исключение, это усложнит создание такого исключения без особых улучшений.

Поскольку необходимо поместитькод в файле .class, и каждый файл содержит общедоступные class, interface, enum или interface с тем же именем, что и файл, вам все равно нужен какой-то способ объявления имени файлав коде.например,

Вместо

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

вы можете иметь

enum Main { ;
    public static void main(String... args) { }
}

или

interface Main {
    static void main(String... args) { }
}

, но вам нужно будет обернуть main вчто-то по имени, совпадающее с именем файла.

0 голосов
/ 20 декабря 2018

Для Java VM файлы классов являются единственным способом доставки исполняемого кода Java, а библиотеки Java - это всего лишь разновидности контейнеров, содержащих файлы классов.

Когда Java создавалась, существовало прямое сопоставление уровня источникаКлассы Java и файлы классов, поэтому единственный способ создать такой файл класса, содержащий исполняемый код, состоял в том, чтобы объявить класс.

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

Итак, в принципе , может существовать новая языковая конструкция, позволяющая определять автономный метод main без объявления класса, который за кулисами компилируется в файл класса.Но так как типичное приложение имеет только одну точку входа (и без именованного класса хостинга, возможность определить больше, чем один, все равно будет потеряно), это не оправдывает создание новой языковой конструкции.

0 голосов
/ 20 декабря 2018

В Java нет способа иметь метод без включающего типа.Вам нужен класс, интерфейс, перечисление и т. Д., Чтобы иметь возможность объявлять и / или реализовывать метод.Вот как это работает.

Даже когда вы запускаете Java-программу, вы указываете имя класса, содержащего основной метод.Вы не просто запускаете произвольные операторы.

Другими словами, речь идет о структуре программы, а не о конкретной роли, которую класс играет в методе main.И вы даже можете использовать интерфейс вместо класса в последних версиях Java.

...