宝安区网站建设,肇庆百度网站推广,可视化建站源码,网页设计软件dw怎么安装1. 注解
1.1 注释和注解的区别#xff1f;#xff08;掌握#xff09;
共同点#xff1a;都可以对程序进行解释说明。
不同点#xff1a;注释#xff0c;是给程序员看的。只在Java中有效。在class文件中不存在注释的。
当编译之后#xff0c;会进行注释擦除。
…1. 注解
1.1 注释和注解的区别掌握
共同点都可以对程序进行解释说明。
不同点注释是给程序员看的。只在Java中有效。在class文件中不存在注释的。
当编译之后会进行注释擦除。
注解是给虚拟机看的。当虚拟机看到注解之后就知道要做什么事情了。
##1.2 如何使用注解掌握
在以前看过注解Override。
当子类重写父类方法的时候在重写的方法上面写Override。
当虚拟机看到Override的时候就知道下面的方法是重写的父类的。检查语法如果语法正确编译正常如果语法错误就会报错。
1.3 Java中已经存在的注解掌握
Override表示方法的重写
Deprecated表示修饰的方法已过时
SuppressWarnings(“all”)压制警告
除此之外还需要掌握第三方框架中提供的注解
比如Junit
Test 表示运行测试方法
Before 表示在Test之前运行进行数据的初始化
After 表示在Test之后运行进行数据的还原
1.4 自定义注解了解
自定义注解单独存在是没有什么意义的一般会跟反射结合起来使用会用发射去解析注解。
针对于注解只要掌握会使用别人已经写好的注解即可。
关于注解的解析一般是在框架的底层已经写好了。
1.5 特殊属性掌握
value
当注解中只有一个属性,并且属性名是value,使用注解时,可以省略value属性名
代码示例
//注解的定义
public interface Anno2 {public String value();public int age() default 23;
}//注解的使用
Anno2(123)
public class AnnoDemo2 {Anno2(123)public void method(){}
}1.6 元注解了解
可以写在注解上面的注解
Target 指定注解能在哪里使用
Retention 可以理解为保留时间(生命周期)
Target:
作用用来标识注解使用的位置如果没有使用该注解标识则自定义的注解可以使用在任意位置。
可使用的值定义在ElementType枚举类中常用值如下
TYPE类接口FIELD, 成员变量METHOD, 成员方法PARAMETER, 方法参数CONSTRUCTOR, 构造方法LOCAL_VARIABLE, 局部变量
Retention
作用用来标识注解的生命周期(有效范围)
可使用的值定义在RetentionPolicy枚举类中常用值如下
SOURCE注解只作用在源码阶段生成的字节码文件中不存在CLASS注解作用在源码阶段字节码文件阶段运行阶段不存在默认值RUNTIME注解作用在源码阶段字节码文件阶段运行阶段
注解的解析
1.7 模拟JUnit自带的Test注解了解
代码示例
Target(ElementType.METHOD)
Retention(RetentionPolicy.RUNTIME)
public interface MyTest {
}public class MyTestMethod {MyTestpublic void method1(){System.out.println(method1);}public void method2(){System.out.println(method2);}MyTestpublic void method3(){System.out.println(method3);}
}public class MyTestDemo {public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException {//1,获取class对象Class clazz Class.forName(com.itheima.test2.MyTestMethod);//获取对象Object o clazz.newInstance();//2.获取所有方法Method[] methods clazz.getDeclaredMethods();for (Method method : methods) {//method依次表示类里面的每一个方法method.setAccessible(true);//判断当前方法有没有MyTest注解if(method.isAnnotationPresent(MyTest.class)){method.invoke(o);}}}
}1.8 注解小结
掌握如何使用已经存在的注解即可。
Override表示方法的重写
Deprecated表示修饰的方法已过时
SuppressWarnings(“all”)压制警告
Test表示要运行的方法
在以后的实际开发中注解是使用框架已经提供好的注解。
自定义注解解析注解很难的了解一般会出现在框架的底层。当以后我们要自己写一个框架的时候才会用到自定义注解解析注解。