为其名称和javadoc描述重用字段或方法

时间:2013-11-16 22:26:45

标签: java inheritance struts javadoc

我正在使用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)的更好策略的任何明智的想法

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

接口中不能包含实例字段,因为接口没有任何状态。您添加到接口的字段实际上是public static final常量。

你要做的事情是行不通的。

Class1没有javadoc中描述的任何字段,因为它没有任何字段。

Class3:有一个实例字段i,它与界面中定义的静态常量i完全不同(它隐藏它)。

如果您想重复使用字段,getter和setter,最好的办法是使用合成而不是继承。将所有这些公共字段放在一个类中(比如说Address),并在所有需要处理地址的动作类中都有一个Address类型的字段。