日期:2014-05-20  浏览次数:20881 次

哪位有时间,帮忙写下这个的实现过程,让我参考学习一下(非作业)
创建Person类,Person的属性有:
  Strng name 姓名
  String sex 性别
  Integer age 年龄,
  String idNo 身份证号
  Boolean isMerried 是否已婚
  请生成相应的getter、setter方法。请编写注解@Label,表示所注解对象的中文名称,请把@Label注解标注在Person类和Person的每个属性上面。请编写PersonInput类,负责提示录入人员的相关属性,提示必须是注解@Label所标注的中文名称。请编写PersonDisplay,负责显示人员信息,显示时的属性名称必须为注解@Label所标注的中文名称,PersonInput类与PersonDisplay类实现了共同的接口PersonAction,接口PersonAction有方法process,方法process的签名为:public Person process(Person person);

PersonDisplay和PersonInput具体怎么实现的?
annotation interface

------解决方案--------------------
Label.java
@Target({ ElementType.TYPE, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Label {
    String chineseLabel();
}


Person.java
@Label(chineseLabel = "人员信息")
public class Person {
    @Label(chineseLabel = "姓名")
    String name;

    @Label(chineseLabel = "性别")
    String sex;

    @Label(chineseLabel = "年龄")
    Integer age;

    @Label(chineseLabel = "身份证号")
    String idNo;

    @Label(chineseLabel = "是否已婚(已婚:T,未婚:F)")
    Boolean isMerried;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getIdNo() {
        return idNo;
    }

    public void setIdNo(String idNo) {
        this.idNo = idNo;
    }

    public Boolean getIsMerried() {
        return isMerried;
    }

    public void setIsMerried(Boolean isMerried) {
        this.isMerried = isMerried;
    }

}


PersonAction.java
public interface PersonAction {
    public Person process(Person person);
}


PersonInput.java
public class PersonInput implements PersonAction {

    @Override
    public Person process(Person person) {
        if (person == null) {
            person = new Person();
        }
        Class<? extends Person> clazz = person.getClass();

        if (clazz.isAnnotationPresent(Label.class)) {
            System.out.println(clazz.getAnnotation(Label.class).chineseLabel());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Object content;
        PropertyDescriptor pd;
        Method method;
        for (Field field : clazz.getDeclaredFields()) {
            try {
                if (field.isAnnotationPresent(Label.class)) {