java注解反射简单实例
2023-09-11 14:19:38 时间
1、创建一个注解
package com.anno; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) // 表示注解在运行时依然存在 @Target(ElementType.METHOD) // 表示注解可以使用在方法上 public @interface CallAnnotation { String phone() default "某某";; // 表示注解须要一个参数,默认值为"某某" }
2、创建一个person类,使用注解
package com.anno; public class Person { public void call( String phone) { System.out.println("call=>"+phone); } @CallAnnotation public void callByAnnotationDefault(String phone){ System.out.println("callByAnnotationDefault=>"+phone); } @CallAnnotation(phone = "张三") public void callByUserAnnotation(String phone){ System.out.println("callUserAnnotation=>"+phone); } }
3、测试注解
package com.anno; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class TestAnno { public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { Person person = new Person(); //创建person对象 Method[] methods = Person.class.getDeclaredMethods(); //得到所有方法 for (Method meth : methods) { CallAnnotation annoTemp = null; annoTemp = meth.getAnnotation(CallAnnotation.class); //得到注解对象 System.out.println("调用方法名称:" + meth.getName()); System.out.println("注释的对象信息:" + annoTemp); if (annoTemp != null) { //如果注解对象不为空,将参数值设为注解的值 meth.invoke(person, annoTemp.phone()); } else { meth.invoke(person, "李四"); //如果注解对象为空,单独设置参数值 } System.out.println(); } } }
转 : https://www.cnblogs.com/2015android/p/4717348.html
相关文章
- Jmeter里的全能java测试sampler - Java request
- Java学习(多表查询(内连接查询,外连接查询,子查询),事务(基本介绍,四大特征,隔离级别),DCL(管理用户,权限管理))
- Java反射异常:java.lang.NoSuchFieldException
- Java实现 LeetCode 823 带因子的二叉树(DP)
- Java实现 LeetCode 143 重排链表
- Java实现第十届蓝桥杯矩形切割
- java实现BellmanFord算法
- Java实现台阶问题
- (Java实现) 最大团问题 部落卫队
- (Java实现) 洛谷 P1031 均分纸牌
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- java struts2入门学习实例--使用struts2快速实现多个文件上传
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- Java - 初识Java
- Java中synchronized的使用实例
- 【Java】java使用反射访问对象方法和成员变量
- Atitit.导出excel报表的设计与实现java .net php 总结
- atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php
- How to improve Java's I/O performance( 提升 java i/o 性能)
- java类的初始化块/执行顺序,实例化对象数据赋值
- java-信息安全(十二)-数字证书、CA证书【Java证书体系实现】
- POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解
- java.lang.OutOfMemoryError: Java heap space