【发布时间】:2012-02-15 12:19:53
【问题描述】:
我们可以用一个包含 main 方法的非公共类编写一个 java 程序——它可以编译和运行得很好。人们为什么要公开主类?
有什么好处吗?
【问题讨论】:
我们可以用一个包含 main 方法的非公共类编写一个 java 程序——它可以编译和运行得很好。人们为什么要公开主类?
有什么好处吗?
【问题讨论】:
只有当您在 main 方法中使用的类不属于同一个包时,您才会受益。公共类将在所有包中可见。
【讨论】:
仅仅是因为客户可以根据您为类指定的可访问性来创建类的对象。如果您查看 Java 源库,您也会看到很多私有(内部类)类。取决于您希望允许谁访问来创建您的类的对象。
【讨论】:
private 或 protected 除非它们是嵌套类。
为了拥有一个 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"