为具有(模拟)optional/default 个参数的函数编写 Javadoc
Writing Javadoc for functions with (simulated) optional/default arguments
我有一些 C++ 代码的 Java 包装器,我在其中通过手动重载相关方法来模拟默认参数。 [示例如 Does Java support default parameter values? 中所示。] 在一种情况下,C++ fn 有 3 个可选参数,因此我不得不在 Java.
中编写 8 个方法
现在我想为所述方法编写 Java文档。有什么办法可以避免将基本相同的文本写 8 次?除了冗长之外,这将是一场维护噩梦...
编辑:这是一个说明方法签名的玩具示例:
void foo(int i, String s, double d);
void foo(int i, String s);
void foo(int i, double d);
void foo(int i);
void foo(String s, double d);
void foo(String s);
void foo(double d);
void foo();
一个解决方案是在具有所有参数的方法中编写完整的 Javadoc 文档,然后 link 到重载中的该文档,使用 @link
and/or @see
指令,例如:
/**
* The parameters in the wrapped C++ method are all optional,
* so we had to write an overload for each parameter combination.
* @param i the int parameter used for x.
* @param s the string parameter used for y.
* @param d the double parameter used for z.
*/
void foo(int i, String s, double d);
/**
* Overload of the {@link #foo(int, String, double)} method with a default {@code d}.
*/
void foo(int i, String s);
/**
* @see #foo(int, String, double)
*/
void foo(int i, double d);
...
我有一些 C++ 代码的 Java 包装器,我在其中通过手动重载相关方法来模拟默认参数。 [示例如 Does Java support default parameter values? 中所示。] 在一种情况下,C++ fn 有 3 个可选参数,因此我不得不在 Java.
中编写 8 个方法现在我想为所述方法编写 Java文档。有什么办法可以避免将基本相同的文本写 8 次?除了冗长之外,这将是一场维护噩梦...
编辑:这是一个说明方法签名的玩具示例:
void foo(int i, String s, double d);
void foo(int i, String s);
void foo(int i, double d);
void foo(int i);
void foo(String s, double d);
void foo(String s);
void foo(double d);
void foo();
一个解决方案是在具有所有参数的方法中编写完整的 Javadoc 文档,然后 link 到重载中的该文档,使用 @link
and/or @see
指令,例如:
/**
* The parameters in the wrapped C++ method are all optional,
* so we had to write an overload for each parameter combination.
* @param i the int parameter used for x.
* @param s the string parameter used for y.
* @param d the double parameter used for z.
*/
void foo(int i, String s, double d);
/**
* Overload of the {@link #foo(int, String, double)} method with a default {@code d}.
*/
void foo(int i, String s);
/**
* @see #foo(int, String, double)
*/
void foo(int i, double d);
...