java annotation 属性_java annotation 获取属性
自定义Annotation
1.声明一个annotation,类型是@interface
//声明注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documentedpublic @interfaceValueBind {enumfieIdType {
STRING, INT
};
fieIdType type()default fieIdType.STRING;//为属性提供一个默认值
String value()default "sandy";
}
@Target 表示注解用在什么位置,我这里用在属性上面,可用ElementType枚举类型主要有:
TYPE : 类、接口或enum声明
FIELD: 域(属性)声明
METHOD: 方法声明
PARAMETER: 参数声明
CONSTRUCTOR: 构造方法声明
LOCAL_VARIABLE:局部变量声明
ANNOTATION_TYPE:注释类型声明
PACKAGE: 包声明
@Retention 表示需要在什么级别保存该注解信息。可用RetentionPolicy枚举类型主要有:
SOURCE: 注解将被编译器丢弃(编译的时候删除掉)。
CLASS : 注解在class文件中可用。但会被VM丢弃。
RUNTIME: VM将在运行时也保存注解(一般都是用这个,运行时通过反射读取注解)
@Documented: 将此注解包含在Javadoc中
2.新建一个需要使用Annotation的类
importtest.annotation.ValueBind.fieIdType;public classStudent {/**因为我为String类型在annotation文件中已经添加了默认值,所以这里可以不用值 **/@ValueBindpublicString name;/**因为这的默认值是String类型,而这用了int类型 ,所以我这里重新设了值 **/@ValueBind(type= fieIdType.INT, value = "15")public intage;publicString toString() {return String.format("Student[name=%s,age=%d]", name, age);
}
}
3.通过反射机制,得到Annotation的值
public static void main(String[] args) throwsException {//通过反射得到类
Object obj = Class.forName("test.annotation.Student").newInstance();//得到类的属性列表
Field[] fields =obj.getClass().getDeclaredFields();for (int i = 0; i < fields.length; i++) {//这个是检查类中属性是否含有注解
if (fields[i].isAnnotationPresent(ValueBind.class)) {//获取注解
ValueBind annotation = fields[i].getAnnotation(ValueBind.class);
String type=annotation.type().toString();if (type.equals("INT")) {
fields[i].setInt(obj, Integer.parseInt(annotation.value()));
}else if (type.equals("STRING")) {
fields[i].set(obj, annotation.value());
}
}
}
System.out.println(((Student) obj).toString());
}
文笔不好,看不看得懂,随意
参考:
java annotation 属性_java annotation 获取属性相关推荐
- Java 扫描枚举类并获取属性
Java 扫描枚举类并获取属性 文章目录 Java 扫描枚举类并获取属性 第一步:在 pom.xml 下导入 hutool 和 commons-lang3 第二步:写一个接口以规范枚举的属性 第三步: ...
- java annotation应用_java Annotation的应用
一.Annotation 示例 Override Annotation 1 @Override2 public void onCreate(Bundle savedInstanceState); 二. ...
- java反射可以获得什么属性_java反射获得属性的值
java反射api_IT/计算机_专业资料.java反射教程,深刻理解java反射,反射 聯絡郵箱:zhiyong.tong@ 反射 API 反射 API 表現,或者反射類,接口,和對象在現..... ...
- java正则表达式 中括号_Java正则表达式获取中括号之间的内容
不包含中括号 正则表达式如下: \\[(.*?)] 注: .匹配除换行符\n之外的任何单字符: *匹配前面的子表达式零次或多次: ?匹配前面的子表达式零次或一次: ()标记一个子表达式的开始和结束位置 ...
- java annotation应用_Java Annotation高级应用
前言: 在此行文<java annotation高级应用>,具体实例化解释annotation和annotation processing tool(APT)的使用.望能对各位的有所帮助. ...
- java annotation入门_JAVA - Annotation 注解 入门
Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...
- java线程属性_Java 并发 线程属性
Java 并发 线程属性 @author ixenos 线程优先级 1.每当线程调度器有机会选择新线程时,首先选择具有较高优先级的线程 2.默认情况下,一个线程继承它的父线程的优先级 当在一个运行的线 ...
- java 反射,根据类获取 属性名字和值
/*** @Author MWZHYF* @Description // 产生对象字段* @Date 15:33 2019/4/25* @Param [obj]* @return java.lang. ...
- java html对象属性_java中对象属性可以是另外一个对象或对象的参考
7.对象的属性可以是另外一个对象或对象的参考 通过这种方法可以迅速构建一个比较大的系统. class Motor { Light[] lights; Handle left, right; KickS ...
最新文章
- Science Advances文章揭示长时记忆的神经动态表征机制
- golang中的WaitGroup
- higher likelyhood that where your key is
- linux中特殊字符的含义,Linux中的特殊符号以及特殊语法
- SQLite性能提升10倍的Web数据库
- 【Quartz】解密properties配置文件中的账号密码
- 大学生html作业总结,总结 HTML标签作业
- 计算 变异系数 标准差 标准偏差 相关系数 平滑指数 回归系数等C++ 模板类
- IBM X3650M3存储raid阵列瘫痪的恢复过程
- w ndows7怎样连接无线网,windows7电脑如何连接wifi
- 五款开源图像处理软件
- 禁止win7系统flash插件自动更新教程【系统天地】
- CF Round 542 Div1.
- Oracle 查询:一小时内、一天内、一周内等
- Android dumpsys常用命令
- Rockwell 罗克韦尔AB Logix 5000控制器 结构化文本语言(ST) 梯形图(LD)顺序功能图(SFC)功能块图(FBD) IEC 61131-3 手册
- 长按键盘,输出多个字,怎么解决?
- 几种经济学上的成本概念
- 旋转接头出现故障的原因分享
- python3安装mysql模块_python3操作MySQL的模块pymysql