Lesson content
Read, practise, then check your understanding
Packages provide namespaces and a visibility boundary. The source directory normally mirrors the package name. Imports shorten type references at compile time; they do not load code or include files.
Organizing an API
package com.example.orders;
import java.time.Instant;
import static java.util.Objects.requireNonNull;
public record Order(String id, Instant createdAt) {
public Order {
requireNonNull(id);
requireNonNull(createdAt);
}
}
Use reversed-domain names to avoid collisions. Wildcard imports do not include subpackages and can make name sources less obvious. Package-private types and members form an internal implementation surface; public types are long-lived contracts. The classpath locates unnamed-module classes and resources, while the module path resolves named modules. Avoid split packages across libraries and keep dependencies flowing from stable APIs toward replaceable implementations.
Knowledge check
Answer every question correctly to complete this chapter.
0 of 10 checks passed
Your progress is saved on this device.