什么是注解?
  • Jdk1.5新增新技术,注解。很多框架为了简化代码,都会提供有些注解。可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件。

    注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。

注解分类:内置注解(也成为元注解 jdk 自带注解)、自定义注解(Spring框架)

为什么使用注解
  • JDK1.5新增注解、泛型、并发包(非并发编程)提高编程效率
  • 简化xml配置,例如:SpringBoot
注解分类之内置注解
  • 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:
  • @Target:说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标
    1. CONSTRUCTOR:用于描述构造器
    2. FIELD:用于描述域
    3. LOCAL_VARIABLE:用于描述局部变量
    4. METHOD:用于描述方法
    5. PACKAGE:用于描述包
    6. PARAMETER:用于描述参数
    7. TYPE:用于描述类、接口(包括注解类型) 或enum声明
  • @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)
自定义注解实现
  • 定义注解

@Target(value = { ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface OneAnnotation {
int beanId() default 0;
String className() default "";
String[]arrays();
}
  • 使用注解
      @OneAnnotation(beanId = 123, className = "className", arrays = { "111", "222" })
public void add() { }
实现ORM框架映射
  • 定义注解接口
  @Retention(RetentionPolicy.RUNTIME)
public @interface SetTable { String value();
}
  • 自定义字段属性
  @Retention(RetentionPolicy.RUNTIME)
public @interface SetProperty {
String name();
int leng();
}
  • 自定义注解代码实现
  public class Main {

  	public static void main(String[] args) throws ClassNotFoundException {
// 1.反射class
Class<?> classForName = Class.forName("com.entity.Sudent");
// 2.获取表名称注解F
SetTable setTable = classForName.getAnnotation(SetTable.class);
// 3.获取所有的成员属性
Field[] declaredFields = classForName.getDeclaredFields();
StringBuffer sf = new StringBuffer();
sf.append(" select ");
String fromName = setTable.value();
for (int i = 0; i < declaredFields.length; i++) {
Field field = declaredFields[i];
// 4.属性字段
SetProperty sb = field.getAnnotation(SetProperty.class);
sf.append(" " + sb.name() + " ");
if (i == declaredFields.length - 1) {
sf.append(" from ");
} else {
sf.append(" , ");
}
}
sf.append(" " + fromName);
System.out.println(sf.toString());
} }

Java基础-注解的更多相关文章

  1. Java基础—注解(转载)

    概念 注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面 ...

  2. java基础-注解Annotation原理和用法

    在很多java代码中都可以看到诸如@Override.@Deprecated.@SuppressWarnings这样的字符,这些就是注解Annotation.注解最早在jdk5中被引入,现在已经成为j ...

  3. Java基础—注解的使用

    1.注解的概述: 注解是用来替代配置文件的!你回忆一下,我们以前总是要写一些配置文件,例如web.xml你还记得么?里面要写<servlet>和<servlet-mapping> ...

  4. Java基础——注解

    一.概述 引自百度百科: 定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法. ...

  5. Java基础--注解Annotation

    Annotation是给类,方法或域上加的一种特殊的标记,可以通过反射取到注解的类型和值,从而完成某种特定的操作. 定义注解需要使用元注解,元注解有@Retention和@Target //@Rete ...

  6. java基础—注解annotation

    一.认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts ...

  7. Java 基础 —— 注解

    注解(annotation)不是注释(comment): 注解,是一种元数据(metadata),可为我们在代码中添加信息提供了一种形式化的方法.注解在一定程度上实现了元数据和源代码文件的结合,而不是 ...

  8. Java基础--注解、反射

    一.注解(Annotation) 1.什么是注解? 从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行 ...

  9. Java 基础 —— 注解 Annotation

    简介 Annotation 是从 JDK 5.0 引入的. 注解使得我们可以以编译器验证的格式存储程序的额外信息.注解可以生成描述符文件,甚至是新的类定义,并且有助于减轻编写"样板" ...

  10. Java基础 - 注解详解

    What - 什么是注解?        Annontation是Java5开始引入的新特征,中文名称叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素( ...

随机推荐

  1. csp-s模拟测试56Merchant, Equation,Rectangle题解

    题面:https://www.cnblogs.com/Juve/articles/11619002.html merchant: 二分答案,贪心选前m大的 但是用sort复杂度不优,会T掉 我们只是找 ...

  2. SpringBoot_02_SpringBoot的配置文件

    1.SpringBoot配置文件 SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者appli ...

  3. webpack 清理旧打包资源插件

    当我们修改带hash的文件并进行打包时,每打包一次就会生成一个新的文件,而旧的文件并 没有删除.为了解决这种情况,我们可以使用clean-webpack-plugin 在打包之前将文件先清除,之后再打 ...

  4. vue 单纯的获取经纬度 百度与高德 H5

    首先用百度的api举个例子 首先在index页面引入如下: <script type="text/javascript" src="http://api.map.b ...

  5. VUX的使用方法(以弹出框为例)

    一.安装 cnpm install vux --save cnpm install vux-loader --save-dev 二.配置 const vuxLoader = require('vux- ...

  6. 用python获取ip信息

    1.138网站 http://user.ip138.com/ip/首次注册后赠送1000次请求,API接口请求格式如下,必须要有token值 import httplib2 from urllib.p ...

  7. vue 路由跳转记住滚动位置,返回时回到上次滚动位置

    参考:https://blog.csdn.net/qq_40204835/article/details/79853685 方法一: 利用Keep-Alive和监听器 1.首先在路由中引入需要的模块 ...

  8. Python学习之--python概要

    1 Python的优点 Python语言类库齐全,语法简洁,而且在linux上自带安装,在处理大数据以及自动化方面有其独有的特点.2 Python的解释器 Python解释器用来解释python代码, ...

  9. springboot2配置druid数据库连接池

    注意配置以下的依赖: <!-- 引入druid数据源--> <dependency> <groupId>com.alibaba</groupId> &l ...

  10. 周期串Uva455 P37 3-4

    A character string is said to have period k if it can be formed by concatenating one or more repetit ...