Tom*_*sky 5 java default-constructor effective-java
在《Effective Java》(第三版)第 56 条中,Joshua Bloch 指出:“公共类不应该使用默认构造函数,因为没有办法为它们提供文档注释。”
默认构造函数不会做任何意外的事情,但它只是创建一个新实例。什么样的信息应该记录在无参数构造函数的文档注释中,而这些信息不应该只存在于类注释中?
如果一个类在初始化块中具有有趣的行为(因为否则没有地方可以对它们进行注释),或者甚至是字段的非标准值分配(可能调用方法来获取初始值),我可以理解这样做。但对于大多数课程来说,这似乎并没有增加太多。我有什么遗漏的吗?
在大多数情况下你是对的。
我认为在这些情况下,使用默认构造函数是有意义的,因为您没有任何可记录的内容。
现在,在其他一些情况下,记录该方法的功能(更具体地说是其默认状态)非常有用。
因为即使默认构造函数有一个空的主体,它也可能在其字段中使用默认值,这可能是值得记录的。
以下是 JDK 类的两个示例,其中 javadoc 可以为具有空主体的构造函数提供有用的信息。
堆
/**
* Creates an empty Stack.
*/
public Stack() {
}
Run Code Online (Sandbox Code Playgroud)
当然,客户可能会在调用此构造函数时猜测堆栈是空的,但明确指定它会更好。
原子整数
取AtomicInteger空的构造函数:
/**
* Creates a new AtomicInteger with initial value {@code 0}.
*/
public AtomicInteger() {
}
Run Code Online (Sandbox Code Playgroud)
构造函数AtomicInteger 已重载。所以我们不属于潜在的默认构造函数的情况。
但无论如何,它是一个空参数构造函数,主体为空,类似于默认构造函数生成的内容。
如果没有这些构造函数 javadoc,这些类的客户端应该查看实现来猜测信息,而限制客户端查看实现以了解其规范的 API 并不是一个设计良好的 API。
| 归档时间: |
|
| 查看次数: |
3174 次 |
| 最近记录: |