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 ================================= ...
随机推荐
- 本机访问其它电脑上的oracle数据库
最近发现很多人问到怎么才能访问别人机子上的oracle,这里来给大家做个示范 借助工具的话,oracle就自己带了两个配置和移值助手下面:net configuration assistant 和ne ...
- React.js 小书 Lesson7 - 组件的 render 方法
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson7 转载请注明出处,保留原文链接和作者信息. React.js 中一切皆组件,用 React. ...
- FileZila
FileZilla下载文件失败的原因 对应访问的目录在服务器上没有权限下载 在本地没有切换到用户的家目录
- UVA 10462 —— Is There A Second Way Left?——————【最小生成树、kruskal、重边】
Nasa, being the most talented programmer of his time, can’t think things to be so simple. Recently a ...
- [转] Java集合类详解
集合类说明及区别Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap ...
- jQuery UI dialog 隐藏默认关闭按钮
var O_dialog = $("#dialog-modal"); O_dialog.dialog({ closeOnEscape: false, width: 250, hei ...
- Sql 本周当天本期日期转换
--查询当天: --查询24小时内的: --info为表名,datetime为数据库中的字段值 --查询当天: --查询24小时内的: select * from table where DateDi ...
- java webServer(一)
java webServer实现 浏览器和服务器使用的是http协议,http协议使用的是tcp 这里主要在服务器端监听端口号 实现功能 通过浏览器向服务器发送http请求:http://localh ...
- ACM-单调队列
对于单调队列的基本概念可以去看百科里的相关介绍:http://baike.baidu.com/view/3771451.htm 这里挑一些重点. 作用: 不断地向缓存数组里读入元素,也不时地去掉最老的 ...
- JSON 与 XML基本了解
简单了解JSON 和 XML ,以及他们的区别: JSON:是一种轻量级的数据交换格式,ECMA(欧洲计算机制造商协会)的一个子集: 优点:轻量级.占用宽带小.易于人的阅读和编写,便于js解析,支 ...