构造器(Constructor)的应用场景
构造器用于初始化对象的状态。默认构造器由Java自动生成,但自定义构造器可满足特定需求。
- 无参构造器:创建对象时不强制传入参数,适用于配置默认值。
- 有参构造器:强制初始化关键属性,如用户类必须设置
username
和password
。 - 链式构造器:通过
this()
调用同类其他构造器,避免代码重复。
示例代码:
public class User {
private String username;
private String password;
// 无参构造器
public User() {
this.username = "default";
this.password = "123456";
}
// 有参构造器
public User(String username, String password) {
this.username = username;
this.password = password;
}
}
Getter/Setter方法的应用场景
用于封装类的属性,提供可控的访问和修改方式。
- 数据校验:在
setter
中加入逻辑,如密码长度检查。 - 延迟加载:通过
getter
实现懒初始化,优化性能。 - 兼容性:后续修改内部存储(如
List
改为Set
)时不影响外部调用。
示例代码:
public class User {
private String password;
public String getPassword() {
return password; // 可返回掩码后的值
}
public void setPassword(String password) {
if (password.length() >= 6) {
this.password = password;
} else {
throw new IllegalArgumentException("密码过短");
}
}
}
工具类(Utility Class)的应用场景
封装通用功能,通常设计为final
类+私有构造器+静态方法。
- 字符串处理:如自定义的
StringUtils
提供trimAll()
方法。 - 数学计算:如
MathUtils
包含复杂的统计公式。 - 日期转换:统一处理
LocalDateTime
与字符串的转换。
示例代码:
public final class DateUtils {
private DateUtils() {} // 防止实例化
public static String format(LocalDateTime date) {
return date.format(DateTimeFormatter.ISO_DATE);
}
public static LocalDateTime parse(String dateStr) {
return LocalDateTime.parse(dateStr, DateTimeFormatter.ISO_DATE);
}
}
综合应用建议
- 构造器优先用于强约束的初始化,避免对象状态不完整。
- Getter/Setter在需要控制访问逻辑时使用,否则可直接用
public final
字段(如常量)。 - 工具类应保持无状态,避免继承,方法命名需明确功能(如
parseXxx()
)。