zoukankan      html  css  js  c++  java
  • 2020-04-13注解和反射


    注解存在三个位置:

    【2】自定义注解+反射使用

    【3】ElementType:注解使用范围

    【4】RetentionPolicy:指定注解存活的位置。

         - source class【默认】 runtime

         - 保留Java文件当中  保留class文件当中【默认】 在JVM执行过程当中依旧能够获取

    【5】@interface 自定义注解——默认只存在于class文件当中;如果要要实际开发中被反射获取,需要使用元注解。

    【6】@Documented :doc文档、注释;将注解写入到doc文档中

    【7】@Target:参数包括,ElementType.[TYPEFIELDCONSTRUCTORMETHOODPARAMETER]

    【8】@Retention:参数,RetentionPlolicy.[RUNTIME]

    【9】给注解添加属性:【1】生命抽象方法【2】添加默认值

    ex:

    public String value1() default “”;

    public int value2();


    常规的内置注解

    【1】@Deprecated:过时内容

    【2】@Override:重写的方法

    【3】@SuppressWarnings:取消编译器的警告


    【4】@Functional Interface:函数式接口、匿名接口

    【5】@SafeVarargs:用于忽略泛型导致的,所以往往 + final 联合应用

    【6】@Rpeatable: 多次使用

        -

    反射

    【1】框架开发、框架升级——学习华为自定制!

    【2】开源框架的问题:安全性无法保障!网络渗透漏洞问题!

    【3】黑客攻击——明白网页安全的重要性!

    -----------

    【1】常规情况:一个类的执行,从源文件开始,经过编译,然后加入类加载器中,然后再执行该程序。——预加载

    【2】反射:程序已经在执行了,执行过程当中,获取类、方法、属性等,然后再组织到当前类加载器当中。——动态执行

    Class类

    【1】Object用于描述对象的类。

    【2】Class:描述类的类。

    【3】获取Class类:

          -通过类名获取class:Class.forName([完全类名——包命+类名]);{如果无法定位到类,会抛:ClassNotFoundException异常} --一般是在配置文件当中获取的字符串

          -通过对象获取:new Person().getClass();一般用于类型不确定的参数传递

          -通过类获取:Person.class。 一般是明确类型的参数传递

    【4】创建实例

           clazz.newInstance()——创建的实例,默认实际是调用目标类的空参构造{抛异常: noSuchMethodException异常}

    【5】获得该类基本信息

           clazz.getPackage():完整包名+类名

           clazz.getSimpleName()

           clazz.getSuperclass()      

           clazz.getInterfaces()

    【6】获得类内部信息

           Field:类的属性

           clazz.getField(属性名)——只能访问可见的成员

           clazz.getDeclaredField(属性名)——访问所有成员{NoSuchFieldException}

           field.setAccessible(true);——设定访问权限为可见【如果访问的是私有的成员】{并且如果不操作则不报错}

           field.set(对象,值)

           clazz.getFields()——获取所有可见成员

           clazz.getDeclaredFields()——获取所有的成员

           field.getName()

           field.getType().getSimpleName()

           field.getType()——获取属性类型

    ==================================

           Method method = clazz.getMethod(方法名,参数类型)

           method.invoke(对象,参数);//执行方法

    struts





    加强训练:成本控制!

    -代码驾驭;异常处理;bug解决问题;


    注解、XML作用:读取配置信息。

    注解对于大型项目,反而不好管理。

    异常:程序继续执行:catch;不往下执行,throw

  • 相关阅读:
    格式与布局
    iframe
    tp
    头信息
    php 文件下载
    socket
    Flex 布局2
    Flex 布局
    下拉刷新
    选取一种类中含有某一属性值得元素的集合
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/12707638.html
Copyright © 2011-2022 走看看