电话
400 9058 355
Java类名必须与文件名一致且首字母大写;公共类需严格匹配文件名(如UserService.java),使用PascalCase命名,避免模糊缩写;成员变量私有化并配getter/setter,布尔字段用isXxx(),集合getter返回不可变视图;构造器应覆盖常用路径,显式提供无参构造器以支持框架;equals()、hashCode()、toString()必须重写,且符合规范。
Java强制要求公共类(public class)的名称必须和源文件名完全相同,包括大小写。比如定义了 public class UserService,就必须保存为 UserService.java。如果类不是 public,则无此限制,但不推荐——因为无法被其他包直接访问,失去封装意义。
常见错误是命名用下划线(如 user_service.java)或小写开头(如 user.java),编译时会报错:class UserService is public, should be declared in a file named UserService.java。
OrderProcessor、HttpConfigBuilder
Mgr、Util;优先用 Manager、Configuration
.java 文件里最多只能有一个 public 类标准 Java 类中,所有字段(private)不应暴露给外部,哪怕只是读取也应通过 public 方法控制。这不是教条,而是为后续加校验、日志、懒加载等留出扩展点。
例如 private String email; 后直接暴露 public String getEmail() 是基础;但如果未来需要校验邮箱格式,只需改方法体,调用方完全无感。
public 或 protected 修饰实例变量(除非是 static final 常量)isXxx() 而非 getXxx(),如 isActive();这是 JavaBeans 规范,框架(如 Jackson、Spring)依赖它做属性绑定Collections.unmodifiableList(list)),防止外部误修改内部状态没有显式定义任何构造方法时,编译器会自动添加一个无参 public 构造器;但只要写了任意一个构造方法,这个默认构造器就消失了。这意味着:如果你希望支持无参创建(比如 ORM 映射、JSON 反序列化),就必须手动保留它。
典型陷阱是只写了一个全参构造器,结果 Spring 报 No default constructor found,或 Jackson 解析时报 Cannot construct instance of Xxx。
this.doInit()),可能触发未初始化字段的访问equals()、hashCode() 和 toString() 是标配这三个方法不是“可选增强”,而是实际开发中高频使用的契约方法。没重写 equals() 和 hashCode(),会导致对象放进 HashSet 或作为 HashMap key 时行为异常;没重写 toString(),日志打印全是 com.example.User@1a2b3c,排查困难。
IDE(如 IntelliJ)能自动生成,但要注意:字段选择必须反映业务意义上的“相等性”。比如 User 类通常用 id 判断相等,而不是 name 和 email 的组合。
equals() 必须满足自反性、对称性、传递性、一致性,且对 null 返回 false
hashCode() 必须保证:若 a.equals(b) 为 true,则 a.hashCode() == b.hashCode()
toString() 时排除敏感字段(如密码)、大对象(如 byte[])、循环引用字段(如 parent/children)equals() 中对业务主键的准确选取——这两处出问题,往往要等到集成测试甚至线上才暴露。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...