【问题标题】:is there any benefit of writing public classes for the main method?为主要方法编写公共类有什么好处吗?
【发布时间】:2012-02-15 12:19:53
【问题描述】:

我们可以用一个包含 main 方法的非公共类编写一个 java 程序——它可以编译和运行得很好。人们为什么要公开主类?

有什么好处吗?

【问题讨论】:

    标签: java class main public


    【解决方案1】:

    只有当您在 main 方法中使用的类不属于同一个包时,您才会受益。公共类将在所有包中可见。

    【讨论】:

      【解决方案2】:

      仅仅是因为客户可以根据您为类指定的可访问性来创建类的对象。如果您查看 Java 源库,您也会看到很多私有(内部类)类。取决于您希望允许谁访问来创建您的类的对象。

      【讨论】:

      • @abc by 'private' 你的意思是'non-public'吗?因为我很确定你不能创建一个类 privateprotected 除非它们是嵌套类。
      【解决方案3】:

      为了拥有一个 main 方法而将类公开并没有任何好处。

      话虽如此,也没有太多理由不这样做。很有可能主类要么会非常短,其中包含很少(如果有的话)实质性方法,要么会被整合到像

      这样的核心类之一中
      class Server {
          public static void main(String[] args) {
              Server s = new Server();
              s.start();
          }
          // rest of Server class here
      }
      

      通常这些核心课程是您希望公开的。

      但这与公开课程的好处无关。这是关于让一个类公开的好处因为它有主方法,因此没有直接的好处。

      【讨论】:

      • 如果您不公开您的课程,您希望能够使用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"
      • @gasan 可能是真的,但这不是 Java 的限制,而是 Ant 的限制。依赖于通过 Ant 运行它是公开该类的正当理由。对于生产环境,这似乎是一个极端情况。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2011-09-07
      • 2011-03-30
      • 1970-01-01
      • 2019-12-14
      • 2015-08-09
      相关资源
      最近更新 更多