美文网首页
java注解和反射

java注解和反射

作者: 吃块西瓜写代码 | 来源:发表于2019-07-24 21:32 被阅读0次

java注解

1 Annotation

  • 不是程序本身,可以对程序做出解释
  • 可以被其他程序读取(编译器)

2 Annotation的格式

  • @Override

3 Annotation可在哪里用

  • 在类里面都可以用
public class Demo{
     @Override
     public String toString(){ 
          return "";
    }
}
public class Demo{
     @Override//这里会报错
     public String tostring(){ 
          return "";
    }
}

4 常见注解

  • @Deprecated 不建议使用
  • @Override 重写
  • @SuppressWarnings抑制编译时的警告信息
    SuppressWarnings(value = "all")
    deprecation unchecked fallthrough path serial finally all 为参数

5 自定义注解

//@interface用于定义一个注解

@Targer{value=ElementType.Method }
public @interface MyAnnotation{
            String studentName();
            String studentName default ""; //用0或者空值表示默认值,-1表示不存在,之一一个参数通常定义为value
            String[] schools() default {};
}


@Target用于描述注解的使用范围PACKAGE,TYPE,CIBSTRUCTOR,FIELD,METHOD,LOCAL VARIABLE,PARAMETER
@Retention表示在什么级别保存注释信息 SOURCE CLASS RUNTIME 注解的什么周期

6 注解的作用

  • 使用注解完成类与表结构的映射关系(ORM 对象关系映射)
    • 类与表结构对应
    • 属性和字段对应
    • 对象和记录对应
@Table = (table)
public class Student{
@Filed(columnName = "id",type = "int", length = 10)
private int id;
private String studentName;
private int age;


}

@Target(value = {ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Table{
  String value();
}

 @Target(value = {ElementType.FIELD}) // 修饰属性
@Retention(RetentionPolicy.RUNTIME)
public @interface AFiled{
  String columnName();
  String type();
  int length();
}
  • 使用反射处理读取注解信息,模拟处理注解信息的流程
public class Demo{
  pubolic static void main(String [] args){
      try{
              Class clz = class.forname("package.Student")
//获得类的所有注解
              Annotation [] annotation = clz.getAnnotations;
Table st = (Table) clz.getAnnotation(Table.class);
//获得类的属性的注解
Filed f = clz.getDeclaredFiled("studentName");
AFiled afiled = (AFiled)f.getAnnotation(clz.class);
AFiled.columnName;
//根据获得的表面,就可以写SQL语句了
}

}
}

7 反射机制性能

  • setAccessible
  • 为true时反射对象在使用时取消Java语言的访问检查。职位false应该做java语言访问检查。
  • 禁用安全检查,可以提高反射的运行速度。但安全性会降低

8 反射操作泛型

  • java采用泛型擦除机制,java新增了ParameterizedType,几种类型来代表不能被归一到class类中的类型。但又于原始类相同的类
getGenericParameterTypes();//获得参数信息
getGenericReturnType();//获得返回信息

9 反射操作注解

//获得类注解
Annotation[] annotation = clz.getAnnotations();
Table st = (Table)clz.getAnnotation(Table.class);
Filed f= clz.getDeclaredFiled("studentName");
Filed1 filed1 = f.getAnnotation(Filed1.class);


相关文章

  • 博客地址

    java注解-01、java注解-02、Git面试资源java反射-01、java反射-02、java反射-03为...

  • Java中的注解和反射

    个人博客http://www.milovetingting.cn Java中的注解和反射 注解 Java注解(An...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Spring注解原理探索(三)

    之 Java如何识别注解 关键词:Java 反射java.lang.reflect 包,实现反射功能的工具类。注解...

  • 2021校招 复习总结

    笔记导航: JAVA: 泛型 反射和动态代理 注解 JAVA多线程 ReentrantLock,Volatile,...

  • java注解和反射

    java注解 1 Annotation 不是程序本身,可以对程序做出解释 可以被其他程序读取(编译器) 2 Ann...

  • Java 注解和反射

    1. 注解 1.1 注解的定义 注解就是源代码的元数据,通熟的讲就是代码中的标签。注解就有如下的特点: 注解是一个...

  • Java 注解和反射

    注解为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后的某个时刻非常方便地使用这些数据。 注解使得我们...

  • JAVA 注解和反射

    一、注解介绍 注解(Annotation)是JAVA5 引入的一种代码辅助工具,其核心作用是对类、方法、变量、参数...

  • 【阿里P8大牛教你Android入门之路(java篇)】——Ja

    一、前言 本部分内容主要包含以下: Java集合 Java反射 Java注解 Java反射 Java IO 其他面...

网友评论

      本文标题:java注解和反射

      本文链接:https://www.haomeiwen.com/subject/nybalctx.html