есть ли польза от написания публичных классов для основного метода?

Мы можем написать Java-программу с одним непубличным классом, содержащим основной метод — она будет компилироваться и работать нормально. Почему люди делают основной класс общедоступным?

Есть ли польза?


person MhdSyrwan    schedule 21.01.2012    source источник


Ответы (3)


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

При этом, на самом деле, нет особых причин не делать этого. Скорее всего, основной класс будет либо очень коротким, с небольшим количеством существенных методов, если таковые вообще будут, либо он будет встроен в один из основных классов, например

class Server {
    public static void main(String[] args) {
        Server s = new Server();
        s.start();
    }
    // rest of Server class here
}

И обычно эти основные классы являются чем-то, что вы хотели бы сделать общедоступными.

Но речь идет не о преимуществах открытых классов. Речь идет о преимуществах публичного класса, потому что у него есть метод main, и в результате этого нет прямых преимуществ.

person corsiKa    schedule 21.01.2012
comment
если вы не сделаете свой класс общедоступным, вы хотите запустить его с помощью ante.g. этот код: class HelloWorld{ public static void main(String... a) { System.out.println("Hello world"); } } запускается ant с файлом сборки: <project> <javac includeantruntime="false" srcdir="." includes="HelloWorld.java"/> <java classname="HelloWorld" classpath="."/> </project> производит java.lang.IllegalAccessException: Class org.apache.tools.ant.taskdefs.ExecuteJava can not access a member of class HelloWorld with modifiers "public static transient" - person dhblah; 12.07.2012
comment
@gasan это может быть правдой, но это не ограничение Java, это ограничение Ant. Наличие зависимости от запуска его через Ant было бы веской причиной для того, чтобы сделать класс общедоступным. И для производственных сред это в любом случае кажется крайним случаем. - person corsiKa; 12.07.2012

Просто потому, что клиенты будут иметь доступ к созданию объектов вашего класса на основе доступности, которую вы укажете для своего класса. Если вы посмотрите на исходные библиотеки Java, вы также увидите множество частных (внутренних классов) классов. Зависит от того, кому вы хотите разрешить доступ для создания объектов вашего класса.

person Ankur Agarwal    schedule 21.01.2012
comment
@abc под «частным» вы имеете в виду «непубличный»? Потому что я почти уверен, что вы не можете создать класс private или protected, если они не являются вложенными классами. - person corsiKa; 21.01.2012

Преимущество у вас будет только в том случае, если классы, которые вы используете в основном методе, не принадлежат одному и тому же классу package.Public будет виден во всех пакетах.

person csarathe    schedule 21.01.2012