我正在使用struts 2
并通过其机制获益,在我宣布班级的request params
时我可以使用exact names as field variables
。
MyClass extends SomeOtherClass {
/** the user id*/
private int userId;
/** the user name*/
private String userName;
// /** java doc description for getters and setters here*/
//getters and setters for userId and userName here
}
mysite.com?userId=3&userName=sarah
这里的宇宙结束工作得非常好。
现在我有很多(很多)这样的类共享相同的命名字段变量(当然有不同的值,但名称和javadoc描述相同)。
我想在一个地方为他们写名字和/ javadoc说明*。**
既然我无法使用继承,因为我已经从其他类扩展,我尝试使用接口。
public interface MyInterface {
/** description from interface for String s */
String s = null;
/** description from interface for int i */
int i = -1;
/** description from interface for boolean b */
boolean b = false;
/** description from interface for getB */
boolean getB();
}
public class Class3 implements MyInterface {
/** description from class 2 for int i */
int i;
/** description from class 2 for getB */
private boolean getB(){
return b;
}
/** description from class 2 for s() */
private String s(){
return null;
}
}
public class Class1 implements MyInterface {
String getS(){
return s;
}
}
问题:
为第1或第3类生成的java文档不会显示任何字段或说明。为什么?
考虑struts params并在一个地方声明共同字段及其描述但使用相同的(在每个类中使用不同的值和getter和setter)的更好策略的任何明智的想法
答案 0 :(得分:0)
接口中不能包含实例字段,因为接口没有任何状态。您添加到接口的字段实际上是public static final
常量。
你要做的事情是行不通的。
Class1没有javadoc中描述的任何字段,因为它没有任何字段。
Class3:有一个实例字段i
,它与界面中定义的静态常量i
完全不同(它隐藏它)。
如果您想重复使用字段,getter和setter,最好的办法是使用合成而不是继承。将所有这些公共字段放在一个类中(比如说Address),并在所有需要处理地址的动作类中都有一个Address类型的字段。