java 注解 demo_JAVA语言注解概念使用及Demo讲解
本文主要向大家介绍了JAVA语言注解概念使用及Demo讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
java注解
概念
Java提供了一种原程序中的元素关联任何消息和任何元数据的途径和方法,即注解
java中的常见注解
@Override
@Deprecated
@Suppvisewarnings
第三方注解
Spring @Autowired @Service @Repository Mybatis @InsertProvider @UpdateProvider @Options
元注解
@Target注解 作用域控制
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
@Retention注解的生命周期
/**
* Annotations are to be discarded by the compiler.
* 注解只在源码中存在,编译成.class就不存在了
*/
SOURCE,
/**
* Annotations are to be recorded in the class file by the compiler
* but need not be retained by the VM at run time. This is the default
* behavior.
* 注解在源码和.class文件中都存在 jdk自带的注解都属于编译时注解
*/
CLASS,
/**
* Annotations are to be recorded in the class file by the compiler and
* retained by the VM at run time, so they may be read reflectively.
* 运行阶段还起作用,设置可以影响代码运行逻辑@Autowired
* @see java.lang.reflect.AnnotatedElement
*/
RUNTIME
@Inherited允许子类继承 标识性注解
@Documented生成javaDoc时会包含注解 标识性注解
自定义注解
元注解
使用@interface关键字定义注解
成员:
以无参无异常方式声明 可以用default给成员指定一个默认值
成员类型是受限制的:java基本数据类型 + String Class Annoatation Enumeration
如果注解只有一个成员,则成员名为value(),在使用是可以忽略成员名和赋值好(=)
注解类可以没有成员,没有成员则称为标识注解
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface TestAnnoation {
String desc();
int visted();
String comment() default "test";
}
使用注解
@(=,=,…)
@TestAnnoation(desc="ttttest",visted=1)
public class TestDomain {
}
解析注解
概念:通过反射获取类 函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑
注解应用demo
定义注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Column {
String value();
}
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Table {
String value();
}
获取注解,定义注解要进行的操作
public class SqlUtil {
public static String getSql(Object o){
StringBuilder result = new StringBuilder();
//1.获取class
Class c = o.getClass();
//2.获取table名字 即注解的value
boolean isTableAnnotation = c.isAnnotationPresent(Table.class);
if(!isTableAnnotation){
return null;
}
Table t = (Table) c.getAnnotation(Table.class);
String tableName = t.value();
result.append("select * from ").append(tableName).append(" where 1 = 1");
//3.获取字段名字
Field[] declaredFields = c.getDeclaredFields();
for (Field field : declaredFields) {
//处理每个字段对应的sql
//拿到字段名 看是不是column
boolean isColumnAnnotation = field.isAnnotationPresent(Column.class);
if(!isColumnAnnotation){
continue;
}
Column colum = field.getAnnotation(Column.class);
String columnName = colum.value();
//拿到字段的值
String fieldName = field.getName();
String getMethodName = "get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
Object fieldValue = null;
try {
Method method = c.getMethod(getMethodName);
fieldValue = method.invoke(o);
} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//拼装sql
if(fieldValue == null || (fieldValue instanceof Integer && (Integer)fieldValue == 0)){
continue;
}
result.append(" and ").append(fieldName).append("=");
if(fieldValue instanceof String){
result.append("'").append(fieldValue).append("'");
}else if(fieldValue instanceof Integer){
result.append(fieldValue);
}else{
//TODO 扩展其他类型
}
}
return result.toString();
};
}
应用注解,应用操作
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
java 注解 demo_JAVA语言注解概念使用及Demo讲解相关推荐
- 玩转Java注解:元注解、内置注解、自定义注解的原理和实现
点击关注公众号,实用技术文章及时了解 来源:www.jianshu.com/p/ddd0b880641a 前言 Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种 ...
- java 获取类的注解_Java 自定义注解通过反射获取类、方法、属性上的注解
反射 JAVA中的反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变.通俗的讲就是反射可以在运行时根据指定的类名获得类的信息. 注解的定义 注解通过 @interface 关键 ...
- java 元数据 注解_Java:注解(元数据)
初识Java注解 所谓的元数据是指用来描述数据的数据,可能刚听到元数据的时候你会有点陌生,其实任何一个使用过struts或者hibernate的开发人员都在不知不觉中使用元数据,更通俗一点来说元数据是 ...
- 理解Kotlin语言独有的位置注解,让注解控制更精准
在Kotlin语言编写的代码中,你应该看到过类似这样的注解@file:JvmName(...),这有点难以理解,正常的注解不会存在类似@file:这样的前缀,在Java语言中也没有类似的语法.那么,这 ...
- Java注解和xml_Spring注解配置和xml配置优缺点比较
Spring注解配置和xml配置优缺点比较 编辑 在昨天发布的文章<spring boot基于注解方式配置datasource>一文中凯哥简单的对xml配置和注解配置进行了比较.然后朋 ...
- java 反射 注解 运用_Java注解与反射的使用
打开 Eclipse,新建 Java 项目"注解与反射",在 src 下右键并建立包 "注解与反射",在包下右键并建立 Annotation (注解)文件,名称 ...
- 【Android APT】注解处理器 ( 配置注解依赖、支持的注解类型、Java 版本支持 )
文章目录 一.注解处理器 依赖 编译时注解 二.设置 注解处理器 支持的注解类型 三.设置 注解处理器 支持的 Java 版本 四.博客资源 Android APT 学习进阶路径 : 推荐按照顺序阅读 ...
- Java注解库_Java 注解详解
本文部分摘自 On Java 8 基本语法 注解是 Java 5 所引入的众多语言变化之一,是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影 ...
- java 注解_怎样理解 Java 注解和运用注解编程?
怎样理解 Java 注解和运用注解编程? 注解和使用 先来看下概念首先从注释来看: 注释:给代码添加说明和解释,注释帮助开发人员理解程序.(Comment)说白点就是注释是给人看的. 注解:给代码添加 ...
最新文章
- R语言ggplot2可视化图中添加希腊字母实战
- Linux文件夹共享(NFS)
- Android .so .aar..jar文件的使用方式
- MSIL实用指南-比较运算
- 剖析Fragment的Pause生命周期全过程
- 虚拟云服务器有哪些,虚拟云主机和服务器有什么区别
- matlab模拟退火最小球覆盖,【模板】模拟退火 费马点以及最小球覆盖
- Android学习笔记:利用httpclient和AsyncTask 发起网络http post操作
- 等值首尾和-----------2012年12月27日
- 【白皮书分享】站外种草白皮书.pdf(附下载链接)
- godotenv简介
- JAVA学习笔记——JAVA基础语法(二)
- 某IT公司的面试题,难度系数“爆表”。。。
- 闪信霸屏短信USSD是什么?
- time stamp convert
- 02-03-JSP-Maven-会话-MySQL事务
- appdata是什么文件夹,
- 【游戏设计模式】之三 状态模式、有限状态机
- 顺丰快递:请签收Netty灵魂十连问
- Teardrop攻击——发送虚假IP包信息