java如何根据实体类字段获取实体类对应的名称啊 比如说一个实体类public class a{ private String name; private String sex; //get和set方法}如何根据name字段,拿到name对应的“姓名”两个汉字? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是很明白,是name里面储存的value?new a().getName()? 单例模式的get()是获取 set()是设置 假设有一个pojo类,bikepublic class bike{ private String id; private String name; private String num; private String type;}我们可以知道该类的name字段对应的汉字是“名字”,num字段对应的汉字是“数量”,type字段对应的汉字是“类型”有没有什么方法加一个注解,让我们可以在拿到name这个字段的同时,拿到汉字“名字”,注意不是value,是汉字 比如说有没有一个注解X,public class bike{ private String id; @X("姓名") private String name; @X("数量") private String num;}根据这个注解,用num,来拿到数量 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.打印结果:年龄小狗的年龄名称小狗的名称 spring3 mvc 文件上传下载 jdbc连接问题 请教一个el表达式的问题 struts中Action的问题 如何存储ManyToMany关系的EntityBean [help]关于spring:bind的问题 紧急求助:JSP调用EJB,多谢多谢 提高Java开发质量 ejb调试的问题,救命 找不到action是为什么 求教,浏览器总是报错,The origin server did not find a current representation for the targe linux下使用wrapper注册系统服务报错!
new a().getName()?
private String id;
private String name;
private String num;
private String type;
}我们可以知道该类的name字段对应的汉字是“名字”,num字段对应的汉字是“数量”,type字段对应的汉字是“类型”有没有什么方法加一个注解,让我们可以在拿到name这个字段的同时,拿到汉字“名字”,
注意不是value,是汉字
private String id;
@X("姓名")
private String name;
@X("数量")
private String num;
}根据这个注解,用num,来拿到数量
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.打印结果:
年龄
小狗的年龄
名称
小狗的名称