比如说一个实体类
public class a{
  private String name;
  private String sex;
 //get和set方法
}如何根据name字段,拿到name对应的“姓名”两个汉字?

解决方案 »

  1.   

    不是很明白,是name里面储存的value?
    new a().getName()?
      

  2.   

    单例模式的get()是获取 set()是设置
      

  3.   

    假设有一个pojo类,bikepublic class bike{
            private String id;
            private String name;
            private String num;
           private String type;
    }我们可以知道该类的name字段对应的汉字是“名字”,num字段对应的汉字是“数量”,type字段对应的汉字是“类型”有没有什么方法加一个注解,让我们可以在拿到name这个字段的同时,拿到汉字“名字”,
    注意不是value,是汉字
      

  4.   

    比如说有没有一个注解X,public class bike{
         private String id;
         @X("姓名")
         private String name;
         @X("数量")
         private String num;
    }根据这个注解,用num,来拿到数量
      

  5.   

    1.自定义注解
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到  
    @Target({ElementType.FIELD,ElementType.METHOD})//定义注解的作用目标**作用范围字段、枚举的常量/方法  
    @Documented//说明该注解将被包含在javadoc中  
    public @interface FieldMeta {
    String name() default "";
    String description() default "";  
    }2.实体类字段使用注解
    public class Dog {
    @FieldMeta(name="年龄",description="小狗的年龄")
    private int age;
    @FieldMeta(name="名称",description="小狗的名称")
    private String name;
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    }3.通过反射获取实体字段和注解信息
    public static void main(String[] args) {
    Dog dog = new Dog();
    Class<? extends Dog> objclass = dog.getClass();
    Field[] at = objclass.getDeclaredFields();
    for (Field fd : at) {
    // 比如获取这个字段上是否包含NotNull
    if (fd.isAnnotationPresent(FieldMeta.class)) {
    // 这样就获取到这个注解属性了
    FieldMeta d = fd.getAnnotation(FieldMeta.class);
    System.out.println(d.name());
    System.out.println(d.description());
    }
    }
    }4.打印结果:
    年龄
    小狗的年龄
    名称
    小狗的名称