Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
问题1:假设你已经编写了一些类。稍后,你决定将它们拆分为三个包,如下表所示。此外,假设类当前在默认包中(它们没有 package 语句)。
| 包名 | 类名 |
|---|---|
mygame.server
|
Server
|
mygame.shared
|
Utilities
|
mygame.client
|
Client
|
a. 你需要在每个源文件中添加哪些代码才能将每个类放入正确的包中?
答案1a:每个文件的第一行必须指定包:
Client.java 中添加:package mygame.client;Server.java 中添加:package mygame.server;:Utilities.java 中添加:package mygame.shared;b. 要遵循目录结构,你需要在开发目录中创建一些子目录,并将源文件放在正确的子目录中。你必须创建哪些子目录?每个源文件进入哪个子目录?
答案1b:在 mygame 目录中,你需要创建三个子目录:client,server 和 shared。
mygame/client/ 中:Client.javamygame/server/ 中:Server.javamygame/shared/ 中:Utilities.javac. 你认为你需要对源文件进行任何其他更改才能使它们正确编译吗?如果需要,则需要做什么?
答案1c:是的,你需要添加 import 语句。Client.java 和 Server.java 需要导入 Utilities 类,他们可以通过以下两种方式之一进行操作:
import mygame.shared.*;
--or--
import mygame.shared.Utilities;
此外,Server.java 需要导入 Client 类:
import mygame.client.Client;
练习1:下载三个源文件:
a. 使用刚刚下载的源文件实现你在问题 1 中提出的更改。
b. 编译修改后的源文件。(Hint: 如果从命令行调用编译器(而不是使用构建器),请从包含 mygame 目录的目录中调用编译器答案)1:下载包含答案的 zip 文件:mygame.zip
你可能需要更改建议的导入代码以反映我们的实现。