注解以及如何利用反射获取注解

什么是注解1.Annotation是从JDK5.0开始引入的新技术2.Annotation的作用 :(1)不是程序本身,可以对程序作出解释(这一点和注释(comment)没什么区别)(2)可以被其他程序(比如:编译器等)读取3.Annotation的格式:注解是以"@注释名"在代码中存在的,还可以添加一-些参数值,例如:@SuppressWarnings(value="unchecked")4.Annotation在哪里使用?可以附加在package , class , method ,
摘要由CSDN通过智能技术生成

一、什么是注解

1.Annotation是从JDK5.0开始引入的新技术
2.Annotation的作用 :
(1)不是程序本身,可以对程序作出解释(这一点和注释(comment)没什么区别)
(2)可以被其他程序(比如:编译器等)读取
3.Annotation的格式:
注解是以"@注释名"在代码中存在的,还可以添加一-些参数值,例如:@SuppressWarnings(value="unchecked")
4.Annotation在哪里使用?
可以附加在package , class , method , field 等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问

二、内置注解

1.@Override :定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明
2.@Deprecated :定义在java.lang.Deprecated中, 此注释可以用于修辞方法,属性,类,表示不鼓励程序员使用这样的元素, 通常是因为它很危险或者存在更好的选择
3.@SuppressWarnings :定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息
与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数都是已经定义好了的,我们选择性的使用就好了
(1)@SuppressWarngs("all")
(2)@SuppressWarnings("unchecked")
(3)@Su

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过以下步骤来实现根据名称反射获取具有该注解内容的实体类: 1.使用Java反射机制获取指定包下所有的类。 2.遍历每个类,判断该类是否被指定注解所标注。 3.如果该类被指定注解所标注,则将该类的Class对象存入List集合中。 4.遍历List集合,根据类名获取相应的实体类。 下面是一个示例代码: ```java public class AnnotationUtils { /** * 获取指定包下所有被指定注解标注的类 * * @param packageName 包名 * @param annotation 注解Class对象 * @return List<Class<?>> 返回被指定注解标注的类的Class对象列表 */ public static List<Class<?>> getAnnotatedClasses(String packageName, Class<? extends Annotation> annotation) { List<Class<?>> classes = new ArrayList<>(); // 获取包下所有的类 Set<Class<?>> allClasses = ClassUtils.getClasses(packageName); // 遍历每个类 for (Class<?> clazz : allClasses) { // 判断该类是否被指定注解所标注 if (clazz.isAnnotationPresent(annotation)) { classes.add(clazz); } } return classes; } /** * 根据类名获取相应的实体类 * * @param className 类名 * @return Class<?> 返回实体类的Class对象 * @throws ClassNotFoundException */ public static Class<?> getClassByName(String className) throws ClassNotFoundException { return Class.forName(className); } } ``` 使用示例: ```java // 获取指定包下所有被指定注解标注的类 List<Class<?>> annotatedClasses = AnnotationUtils.getAnnotatedClasses("com.example.entity", MyAnnotation.class); // 遍历被标注的类并根据类名获取相应的实体类 for (Class<?> clazz : annotatedClasses) { String className = clazz.getName(); Class<?> entityClass = AnnotationUtils.getClassByName(className); // TODO: 处理实体类 } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值