Java反射+注解案例
注解类代码,注解的属性可以有多个:
package reflect; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; /***
* java注解默认只会保留在字节码文件里面
* 运行期间注解会被抹掉
* 可以用@Retention来指定注解的保留时间
* 注:
* @Retention是元注解,即用来解释其他注解的注解
* Retentionpolicy.RUNTIME是表示注解保留到运行时。
* @author zlq1252
*
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
/*
* 注解的属性
*
*注解可以有多个属性。
*如果属性名为value时,可以不制定属性名(只有一个属性时)
*/
public String value();
}
方法类,在方法类的方法上加上注解代码如下:
package reflect;
public class C {
public void f1() {
// TODO Auto-generated method stub
System.out.println("C'S f1");
}
@Test(value="淡淡")
public void hello() {
// TODO Auto-generated method stub
System.out.println("C'S hello");
}
@Test(value="洋洋")
public void bala() {
// TODO Auto-generated method stub
System.out.println("C'S bala");
}
}
反射类代码,通过反射类获得所有具有代码注解的方法并执行,同时可以过的注解的属性:
package reflect; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Scanner; public class TestCase3 { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String className = sc.nextLine();
Class clazz = Class.forName(className);
Object obj = clazz.newInstance();
Method[] methods = clazz.getDeclaredMethods();
for(Method mh:methods){
//获得加在方法前面的@Test
Test test = mh.getDeclaredAnnotation(Test.class);
System.out.println("@Test:"+test);
//执行带有注解的方法
if(test!=null){
mh.invoke(obj);
//读取@Test的属性值
String v1 = test.value();
System.out.println("@Test的属性值:"+v1);
}
}
} }
Java反射+注解案例的更多相关文章
- 【译】8. Java反射——注解
原文地址:http://tutorials.jenkov.com/java-reflection/annotations.html ================================== ...
- java反射--注解的定义与运用以及权限拦截
自定义注解类编写的一些规则: 1. Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是 ...
- java反射注解妙用-获取所有接口说明
转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10293490.html 前言 最近在做项目权限,使用shiro实现restful接口权限管理,对整个项目都进 ...
- JAVA-注解(2)-自定义注解及反射注解
自定义注解开发 1.开发一个注解类 开发一个注解类的过程,非常类似于开发一个接口,只不过需要通过@interface关键字来声明 2.使用元注解修饰注解的声明 所谓的原注解是用来修饰注解声明的注释,可 ...
- Java 反射机制学习资料
Java反射——引言 Java反射——Class对象 Java反射——构造函数 Java反射——字段 Java反射——方法 Java反射——Getter和Setter Java反射——私有字段和私有方 ...
- Java反射——引言
Java反射——引言 原文地址:http://tutorials.jenkov.com/java-reflection/index.html *By Jakob Jenkov Java的反射机制使得它 ...
- 【译】1. Java反射——引言
原文地址:http://tutorials.jenkov.com/java-reflection/index.html *By Jakob Jenkov Java的反射机制使得它可以在运行时检查类.接 ...
- 【译】2. Java反射——Class对象
原文地址:http://tutorials.jenkov.com/java-reflection/classes.html ====================================== ...
- 【译】3. Java反射——构造函数
原文地址:http://tutorials.jenkov.com/java-reflection/constructors.html ================================= ...
随机推荐
- 使用 Charles 获取 https 的数据
1. 配置 Charles 根证书 首先打开 Charles: 然后如下图操作: 之后会弹出钥匙串,如果不弹出,请自行打开钥匙串,如下图: 系统默认是不信任 Charles 的证书的,此时对证书右键, ...
- OneDrive撸5T硬盘空间教程
注意:要注册多个账户获取网盘的,用无痕模式打开临时教育邮箱网址.打开之后不要关闭,等会用来接收验证码. 1.需要office 365注册这时候需要教育邮箱: 临时教育邮箱:http://sysu.ed ...
- java语言编程实现两个时间相差多少天、多少小时、多少分、多少秒
不多说,直接上干货! DateDistance.java package zhouls.bigdata.DataFeatureSelection.test; import java.text.Date ...
- JavaScript控制流及关键字与C语言之比较
学习JavaScript控制流及关键字概念前,对有过C语言学习经验的同学来说,那么关键字,控制语句概念并不陌生.我们先来看看C语言吧: C语言的32个关键字和9种控制语句 9种控制语句: if.if- ...
- ubuntu 更改源
1) 备份原来的源 cp /etc/apt/source.list /etc/apt/source.list.old 2) 用下面的文件覆盖 /etc/apt/source.list # 163(非教 ...
- SQL链接字符串
Windows身份验证: Data Source=.;Initial Catalog=MyItcast;Integrated Security=True 数据库身份验证: Data Sou ...
- DNN学习笔记 最简单的皮肤制作
说明: 在学习DNN时,使用的版本为 DNN8.参考资料:http://www.dnnsoftware.com/docs/designers/creating-themes/index.html 制作 ...
- 数据库navicat中limit函数的用法
从t_product表中获取pic_small字段的前十条记录 示例:select pic_small from t_product limit 0,10;
- base标签
我们扒取到网站源码很多时候发现路径是采用相对路径,这时候我们就需要采用base标签了,用法非常简单, <base href="我们扒取网站的域名"/> 这时相对路径就相 ...
- 转:清除arcsde空间垃圾数据以及解决sde图层名称被占用的问题
因为对空间数据管理的不善(非法的删除.重命名等),导致sde中存在一些垃圾数据.和图层名称被占用,这种问题已经有好几个同事问我怎么解决了?现把这个问题已经解决了,下面将整个详细过程写出来,共享给碰到同 ...