我正在写一个 Kotlin 库。在其中一门课中,我有以下内容:
class SessionWrapper {
/**
* The time in milliseconds after which the session will expire.
*/
var expiryTime = DEFAULT_EXPIRY_TIME
get() {
mainThreadCheck()
return field
}
set(value) {
mainThreadCheck()
field = value
updateExpiry(value) <<< THIS ONE
}
...
}
但是,如果他们修改(即调用 setter) ,updateExpiry(long)
则其行为对 的客户应该是透明的。SessionWrapper
expiryTime
现在,对于 Kotlin 项目,这不是问题,因为我可以将额外的 KDoc 添加到expiryTime
属性本身,并且不会觉得不合适:
/**
* The time in milliseconds after which the session will expire.
*
* Updating the expiry time after the session is started does x,
* the listeners will receive y.
*
* Writing comments is fun, when the tools work.
*/
var expiryTime = DEFAULT_EXPIRY_TIME
但是对于 Java 项目,上面的文档会同时出现在setExpiryTime(long)
和getExpiryTime()
中,这感觉不对劲,因为我会在 getter 中使用 setter JavaDoc,在 setter 中使用 getter JavaDoc。
尝试通过以下方式在 Kotlin 中分离两个访问器的文档:
class SomeClass{
var expiryTime = DEFAULT_EXPIRY_TIME
/**
* The time in milliseconds after which the session will expire.
*/
get() {
mainThreadCheck()
return field
}
/**
* Updating the expiry time after the session is started does x,
* the listeners will receive y.
*
* Writing comments is fun, when the tools work.
*/
set(value) {
mainThreadCheck()
field = value
updateExpiry(value)
}
...
}
对于 Kotlin 和 Java 代码,只是在 IDE 中没有显示 JavaDoc。
我发现没有明确的方法可以尝试在KDoc 参考或Java interop page中分离 Java 可见的 getter 和 setter 的文档。
考虑到 Kotlin 与 Java 的良好互操作性,我觉得这很烦人。
将不胜感激任何想法。