• java注解和反射


    junit的单元测试

    使用测试在所测试的方法上加上@Test ,在导入junit包进行测试

    @Before:在@Test的方法之前运行

    @After :在@Test的方法之后运行

    tip:Assert.assertEquals(期望的结果,运算的结果);

    反射

    • 反射获取对象的三种方式

      1.Class.forName("全类名"):将字节码文件加载进内存,返回Class对象
      多用于配置文件,将类名定义在配置文件中。读取文件,加载类

      2.类名.class:通过类名的属性class获取
      多用于参数的传递

      3.对象.getClass():getClass()方法在Object类中定义着。
      多用于对象的获取字节码的方式

    通过class对象来获取属性,方法,构造器并执行和修改属性

    • 获取成员变量

      • Field[] getFields() :获取所有public修饰的成员变量
      • Field getField(String name) 获取指定名称的 public修饰的成员变量
      • Field[] getDeclaredFields() 获取所有的成员变量,不考虑修饰符
      • Field getDeclaredField(String name)
        • 获取后返回Field变量可以进行下面操作:
        • 设置值
          • void set(Object obj, Object value)
            1. 获取值

              • get(Object obj)
            2. 忽略访问权限修饰符的安全检查

              • setAccessible(true):暴力反射
    • 获取构造器

      • Constructor<?>[] getConstructors()
      • Constructor getConstructor(类<?>... parameterTypes)
      • Constructor getDeclaredConstructor(类<?>... parameterTypes)
      • Constructor<?>[] getDeclaredConstructors()
        • Constructor:构造方法
          • 创建对象:
            • T newInstance(Object... initargs)
    • 获取方法

      • Method[] getMethods()
      • Method getMethod(String name, 类<?>... parameterTypes)
      • Method[] getDeclaredMethods()
      • Method getDeclaredMethod(String name, 类<?>... parameterTypes)
      • 执行方法:
        • Object invoke(Object obj, Object... args)

        • 获取方法名称:

          • String getName:获取方法名

    注解

    • 四个元注解

    元注解:用于描述注解的注解
    * @Target:描述注解能够作用的位置
    * ElementType取值:
    * TYPE:可以作用于类上
    * METHOD:可以作用于方法上
    * FIELD:可以作用于成员变量上
    * @Retention:描述注解被保留的阶段
    * @Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
    * @Documented:描述注解是否被抽取到api文档中
    * @Inherited:描述注解是否被子类继承

    自定义注解

    @Target({ElementType.TYPE,ElementType.METHOD})
    @Tetention(TetentionPolicy.RUNTIME)
    public @interface one_anno{
        
    }
    

    ​ 自定义注解后可以标注在类上,这样我们就可以通过反射获取类中带有注解的方法,和带有注解的类,进行下一步操作;;;

  • 相关阅读:
    动态面板——axure线框图部件库介绍
    如何安装(装载)axure组件(部件)
    文本框、文本编辑框、按钮——axure线框图部件库介绍
    图片热区——axure线框图部件库介绍
    水平线、垂直线——axure线框图部件库介绍
    矩形、占位符组件——axure线框图部件库介绍
    文本面板——axure线框图部件库介绍
    windows server 2008 R2服务器安装IIS并添加网站
    使用SplitContainer来实现隐藏窗口的部分内容(转)
    C# VS2010结合SQL Server 2008数据库编程实现方法
  • 原文地址:https://www.cnblogs.com/mankaixin/p/15270057.html
Copyright © 2020-2023  润新知