public record Employee(
String id,
String name,
Optional<String> managerId,
List<String> skills) {
public Employee {
if (id == null || id.isBlank())
throw new IllegalArgumentException("id is required");
if (name == null || name.isBlank())
throw new IllegalArgumentException("name is required");
Objects.requireNonNull(managerId, "managerId is required");
Objects.requireNonNull(skills, "skills are required");
if (skills.stream().anyMatch(s -> s == null || s.isBlank()))
throw new IllegalArgumentException("skills must not be blank");
skills = List.copyOf(skills);
}
public Employee(String id, String name) {
this(id, name, Optional.empty(), List.of());
}
}