zoukankan      html  css  js  c++  java
  • 注解

    一、注解:
      它不是注释 注释是程序员写的,给程序员的
      注解给程序看,用于描述程序如何运行及在什么阶段来运行。
      注解现在在实际开发中,最大的功能是用于替换配置文件。
      注解是jdk1.5的新特性
        可以通过反射来让注解具有功能。
        注解 @xxxx


      1、自定义注解
        1.1JDK中的三个基本的注解:
          a、@Override:检查子类确实是覆盖了父类的方法。
          b、@Deprecated:说明已经过时了。
          c、@SuppressWarnings({ "unused", "deprecation" }):抑制程序中的警告。
                          unused警告的类型。{}数组。all抑制所有警告。
        1.2、自定义注解的语法:(肉体)
          研究一下注解的本质:
          声明一个注解 : @interface 注解名{}
            如:
              public @interface MyAnnotation{}
            通过反编译发现:
              注解它的本质就是一个接口,这个接口需要继承 Annotation接口。
              public interface MyAnnotation extends java.lang.annotation.Annotation {}


            分析注解中的成员
              注解本质上就是接口,接口中可以有属性方法
              属性 : 例:int age();

            关于注解的属性类型可以有哪些?
              1.基本类型
              2.String
              3.枚举类型
              4.注解类型
              5.Class类型
              6.以上类型的一维数组类型

          注解:就是在你的程序代码中的某个位置加了一个标记而已。


        1.3注解的反射:(灵魂)

          a、反射注解类
            java.lang.reflect.AnnotatedElement:
            <T extends Annotation> T getAnnotation(Class<T> annotationType):得到指定类型的注解引用。没有返回null。
            Annotation[] getAnnotations():得到所有的注解,包含从父类继承下来的。
            Annotation[] getDeclaredAnnotations():得到自己身上的注解。
            boolean isAnnotationPresent(Class<? extends Annotation> annotationType):判断指定的注解有没有。

            Class、Method、Field、Constructor等实现了AnnotatedElement接口.
              如:Class.isAnnotationPresent(MyTest.class):判断类上面有没有@MyTest注解;
                Method.isAnnotationPresent(MyTest.class):判断方法上面有没有@MyTest注解。


        1.4、元注解
          a、自定义的注解的存活范围(生命周期):默认是CLASS。

            什么是元注解:
              只能用在注解上的注解叫做元注解。(即:用于修饰注解的注解)
                @Retention:作用。改变自定义的注解的存活范围。
                    RetentionPolicy:
                        SOURCE
                        CLASS
                        RUNTIME
                @Target:作用,指定该注解能用在什么地方。
                    ElementType:
                        TYPE
                        METHOD
                        FIELD
                        ANNOTATION_TYPE
                @Documented:作用,使用了@MyTest的注解的类,如果@MyTest注解上面有@Documented注解,
                        那么使用了@MyTest的注解的类的API文档中会出现@MyTest的身影。
                @Inherited:作用,说明该注解可以被继承下去。

    二、简单介绍Servlet3.0中的几个注解
      增加注解的支持。
        Servlet3.0:
          Tomcat7+;JDK6.0+;

        Servlet3.0:web.xml已经不是必须的了。替代它的就是注解。
          WEB.XML:
              优点:可配置,低耦合; 缺点:不直观,效率低。
            <servlet>
                <servlet-name>UploadServlet2</servlet-name>
                <servlet-class>com.itest.upload.UploadServlet2</servlet-class>
            </servlet>

            <servlet-mapping>
                <servlet-name>UploadServlet2</servlet-name>
                <url-pattern>/servlet/UploadServlet2</url-pattern>
            </servlet-mapping>

          注解:
              优点:直观,效率高; 缺点:硬编码
            @WebServlet({"/servlet/UploadServlet2","/servlet/*"})

    三、类加载器
      1、作用:负责把磁盘上的class文件加载到JVM中,Class引用字节码
      2、JVM中的类加载器:


        BootStrap:老大。类加载器的祖先。 打印它会得到null。
              负责加载JRE/lib/rt.jar(JDK中绝大部分的类)
        ExtClassLoader:
              负责加载JRE/lib/ext/*.jar
        AppClassLoader:
              负责加载在classpath环境变量中的所有类。
      3、父类委托机制
          从子类开始,委托父类找,父类找不到再交给子类找,
          就是说,实际是从BootStrap开始寻找的,三个加载器都找不到就会报异常。

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/soficircle/p/6958828.html
Copyright © 2011-2022 走看看