-
<strong>全面解析 java 注解</strong>查看全部
-
JDk自带注解:
@Override @Deprecated @Suppvisewarning
查看全部 -
Java注解概念:Java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法(注解是在JAVA1.5中引入的)。
学习注解的目的?
1、能够读懂别人写的代码,尤其是框架相关的代码。
注解的优点?
2、使编程更加简洁,代码更加清晰。
注解可以做什么?
3、 在使用框架的时候会使用到注解。
【一】Java中的常见注解(JDK和第三方定义好的注解)
【二】注解的分类
【三】自定义注解
【四】注解应用实战
查看全部 -
解析注解:
通过反射获取类,函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑
步骤1:使用类加载器加载类
Class c=Class.forName("com.ann.test.Child");
步骤2:找到类上面的注解
isAnnotationPresent(类类型):Class对象的方法,判断当前类类型是否存在某个类类型的注解,返回类型为boolean。
boolean isExist=c.isAnnotationPresent(Description.class);
步骤3:获取类上自定义注解实例,需要强制类型转换。
Description d=(Description)c.getAnnotation(Description.class);
步骤4:获取方法上的注解,首先,遍历所有方法,通过方法对象的isAnnotation查看是否有自定义注解,如果存在则输出方法的自定义注解的信息。
第二种解析方法:获取这个方法的所有注解,Annotation [] as=m.getAnnotations();然后遍历该注解,如果遍历的注解是Description类型,则把遍历的注解强转为Description类型,并进行输出value()信息。
@Inherited:当自定义注解上使用了该注解,如果在父类上标识该注解,解析一个子类,子类也可以获取该注解的信息。
查看全部 -
public @interface Description{//使用@interface关键字定义注解
String desc();//成员以无参无异常方式声明
String author();//成员类型受限的,合法的类型包括原始类型及String,Class,Annotation,Enumeration
int age() default 18;//可以用default只认一个默认值
}//注解中有一个成员时,则成员名必须取名为value(),在使用的时候可以忽略成员名和赋值号,注解类可以没有成员,没有成员的注解称为标识注解查看全部 -
常见第三方注解:Spring :@Autowired,@Service,@Repository
Mybatis:@InsertProvider,@UpdateProvider,@Options注解的分类:
按照运行机制分:
源码注解:注解旨在源码中存在,编译成.class文件就不存在了
编译时注解,注解在源码和.class文件中都存在,象jdk自带注解三个都是编译时注解
运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解.
元注解:给注解进行注解.注解的注解
查看全部 -
package com.ann.test;
public class Test {
@SuppressWarnings("deprecation")//忽略deprecation的警告
public void sing() {
Person person=new Child();
person.sing();
}
}查看全部 -
Java注解
看懂别人代码,看懂注解,让编程更加简洁,代码清晰,注解应用广泛,自定义注解解决问题
Java提供了一种源程序中的元素关联任何信息和任何元数据的途径和方法查看全部 -
解析方法的注解;
方法2
查看全部 -
解析方法的注解;
方法1
查看全部 -
解析注解。
查看全部 -
@Documented // 生成javadoc时会包含注解;
查看全部 -
@Inherited
// 允许子类继承;
查看全部 -
@Retention(RetentionPolicy.RUNTIME)
/*
SOURCE:只在源码显示,编译时会丢弃;
CLASS:编译时会记录到class中,运行时忽略;
RUNTIME:运行时存在,可通过反射读取;
*/
查看全部 -
元注解:
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetetionPolicy.RUNTIME)
@Inherited
@Documentedpublic @interface Description{ ... }
/*
CONSTRUCTOR:构造方法声明;
FIELD:字段声明;
LOCAL_VARIABLE:局部变量声明;
METHOD:方法声明;
PACKAGE:包声明;
PARAMETER:参数声明;
TYPE:类接口;
*/
@Target({ElementType.METHOD,ElementType.TYPE})
查看全部
举报