Java 没有 main 的练习文件?

Java exercise files without main?

一直在学习核心 Java 基础知识 (Horstmann/Cornell) 第 9 版,但是在第 5 章之后的某个时候,练习文件和示例代码都不再具有 "main" 方法,但是这本书就像他们应该编译和 运行,等等...

非常困惑,因为 java 应用程序需要 运行 的主应用程序。任何熟悉这些文本的人都可以为我提供一些启示。现在感觉很愚蠢:)

许多库的开发并不是为了 运行 作为一个独立的应用程序。 Joda-Time 就是这样一个例子。它是一个可用于简化日期和时间数据操作的库。不可否认,我链接的源存储库中确实有主要方法,但那是因为它们在其单元测试中使用。

Core Java Fundamentals 第五章的重点是介绍class 继承,这样 Vehicle can be superclass of Boat can superclass of帆船可以超class的翻车鱼。这本书可能有一个像 Person > Employee > Manager 这样的例子,最终在同一章中你可能会看到一个像 TestManager 这样的测试 class,它实际上有一个使用 Manager 的 main 方法。

假设我写了一本类似的书,并在 Person 示例的简化版本上展示了它。我在 Eclipse 中创建了一个项目,我将其命名为 Personnel。我添加了一个包 org.company 并在该包中添加了这 3 个 classes:

package org.company;
public class Person {
    public String name;
    public Person() {

    }
}

员工

package org.company;
public class Employee extends Person {
    public String employeeID;
    public Employee() {

    }
}

经理

package org.company;
import java.util.ArrayList;
import java.util.List;
public class Manager extends Employee {
    public List<Employee> subordinates ;
    public Manager() {
        subordinates = new ArrayList<Employee>();
    }
}

我现在假设您可以创建自己的项目并合并我编写的这些 classes。我将我的名字命名为 Personnel 是无关紧要的。将您的 MyTest1 命名为 MyTest1,然后甚至不必费心创建包,添加一个名为 TestManager 的 class。只要你 A) 将我的 classes 两个文件夹放在你的项目组织/公司/个人、员工、经理中,或者 B) 从每个文件夹中删除 package org.company 并将它们包含在你的旁边new TestManager class,那么您应该能够在测试中将它们实例化为:

测试管理器

import org.company.Employee;
import org.company.Manager;
public class TestManager {
    public static void main(String[] args) {
        Employee bill = new Employee();
        bill.name = "Bill";
        bill.employeeID = "1";

        Employee george = new Employee();
        george.name = "George";
        george.employeeID = "3";

        Manager jill = new Manager();
        jill.name = "Jill";
        jill.employeeID = "1234";
        jill.subordinates.add(bill);
        jill.subordinates.add(george);

        //foreach
        for (Employee emp : jill.subordinates) {
            System.out.println(emp.name);
        }
    }
}

Eclipse 中的文件现在看起来像这样。

您要考虑的未来任务是从 Internet 获取一个库,例如 Joda-Time 并通过将其添加到构建路径来了解如何将其合并到您的项目中。

Classes 将在没有 main 函数的情况下编译,但是当你想执行相同的 class.

时问题就来了

例如: Class A, Class B 和 Class B 有方法但没有 main 方法那么你可以调用没有 main 方法的程序。 JVM 需要一个点火点来告知从哪里开始。对于同一个例子,如果 Class A 有 main 方法,而其他没有。可以从 Class A 调用 class B 和 C 的方法是很好的,因为 JVM 从 A 开始并毫无问题地执行其他 class 方法。