gpt4 book ai didi

java - 简而言之,主要功能行为 - 一个源文件中的多个类

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:49:56 26 4
gpt4 key购买 nike

给定一个名为 TestMainFunction.java

的 Java 源文件

1.) 正如我们大多数人所知,Java 文件名必须是包含主要功能的类名

请参阅下面的简单代码(在如上所述命名的单个文件中),它可以完美执行并打印 ClassOne

public class TestMainFunction {}

class ClassOne {
public static void main(String[] a) {
System.out.println("ClassOne");
}
}

2.) 当一个文件中有多个具有主要功能的类时,Eclipse 会提示用户选择要运行的类。

请参阅下面的简单代码(如上文所述命名的单个文件),它可以完美执行并打印出我们从 Eclipse promt 中选择的类名。

public class TestMainFunction {
public static void main(String[] a) {
System.out.println("TestMainFunction");
}
}

class ClassOne {
public static void main(String[] a) {
System.out.println("ClassOne");
}
}

class ClassTwo {
public static void main(String[] a) {
System.out.println("ClassTwo");
}
}

以上所有内容都会像我提到的那样工作。 它将为每个类创建单独的 .class 文件。即使在使用内部类时,同样的行为也适用。

但是这里到底发生了什么?当一个源文件中存在多个类时,Eclipse 如何知道要启动哪个类?任何人都可以解释一下吗?解释这一点将不胜感激。

最佳答案

As most of you would know, a Java file name must be the class name which contains the main function

这是不正确的,我相信你的困惑的根源。一个 Java 源文件只允许有一个公共(public)类,并且它必须与其包含的文件同名(减去扩展名)。但是,给定的 Java 源文件可能包含所需数量的非公共(public)类文件,唯一的限制是 their names are valid。 .请注意,您可以拥有一个与其包含的源文件同名的类(减去扩展名)但不是公共(public)的!另请注意,在单个 Java 源文件中包含多个顶级(非嵌套)类通常被认为是不好的做法。

您可能有的第二个假设是源文件中只允许一个类具有主函数。这是完全不真实的。您可以向每个类文件添加一个 main 函数 - 唯一重要的是您在启动应用程序时指定给 JVM 的函数。

所以给定你的场景 - 一个包含多个类文件(其中一个是公共(public)的)的源文件,其中每个类都有一个 main 方法,以下适用:

  • 当您在 Eclipse 中对此文件调用运行命令时,Eclipse 将检测到有多个符合条件的类要运行,并会提示您选择其中一个类。然后它将为所选类构建一个“运行配置文件”,只启动该类。实际上,您可以通过“运行”->“调试配置”菜单查看 Eclipse 构建的配置文件。
  • 在外部编译这个源文件时,会生成多个.class文件(不只是一个)。除了在同一个源文件中之外,这些类彼此没有关系,您可以明确选择要在 JVM 中启动的 .class。

即:

java TestMainFunction
java ClassOne
java ClassTwo

关于java - 简而言之,主要功能行为 - 一个源文件中的多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com