• 【注解】

程序中有 注释 和注解

* 注释:给开发人员.

* 注解:给计算机看的.

    注解使用:学习框架支持注解开发.

    • 【JDK提供的注解】

@Override :描述方法的重写.

@SuppressWarnings :压制警告.

@Deprecated :标记过时.

    • 自定义注解:

定义一个类:class

定义一个借口:interface

定义一个枚举:enum

定义一个注解:@interface

   用法:

 

@interface MyAnno1{

}

带有属性的注解:
@interface MyAnno2{
int a() default 1;
String b();
// 注解属性的类型:基本数据类型,字符串类型String,Class,注解类型,枚举类型,以及以上类型的一维数组.
// Date d();
Class clazz();
MyAnno3 m3(); // 注解
Color c(); // 枚举
String[] arrs(); } @MyAnno4("aaa") // 如果属性名称为value 那么使用的时候 value可以省略(只出现这一个value的属性情况下).
public class AnnotationDemo3 { } @interface MyAnno4{
String value();
int a() default 1;
}

 

【自定义注解案例】

  注解类

 package com.xujingyang.annotation;

 import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; //保留到运行时
@Retention(RetentionPolicy.RUNTIME)
//只能作用在方法上
@Target(ElementType.METHOD)
public @interface MyTest { }

测试注解类

 package com.xujingyang.annotation;

 public class Test {
@MyTest
public void f1(){
System.out.println("f1方法执行了~~~~");
} public void f2(){
System.out.println("f2方法执行了~~~~");
} @MyTest
public void f3(){
System.out.println("f3方法执行了~~~~");
}
}

主测试类

 package com.xujingyang.annotation;

 import java.lang.reflect.Method;

 public class Main {
public static void main(String[] args) throws Exception{
Class clazz=Test.class; Method[] methods = clazz.getMethods();
for (Method method : methods) {
// method.invoke(clazz.newInstance());
// System.out.println(method.getName());
boolean b = method.isAnnotationPresent(MyTest.class);//判断是否有添加此注解
if(b){
method.invoke(clazz.newInstance());
}
}
}
}

打印结果

案例二,使用注解方式加载获取JDBC连接的参数

  注解类

 package com.xujingyang.jdbc;

 import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//保留到运行时
@Retention(RetentionPolicy.RUNTIME)
//只能在方法上添加此注解
@Target(ElementType.METHOD)
public @interface JDBCInfo {
//定义加载数据库的几种属性,可以用default关键字赋默认值
String DriverClass() default "com.mysql.jdbc.Driver";
String Url();
String User() default "root";
String Pwd() default "root";
}

测试类

 package com.xujingyang.jdbc;

 import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager; public class Conn {
public static void main(String[] args) throws Exception {
System.out.println(getConnection());//打印连接地址,说明成功
} @JDBCInfo(Url="jdbc:mysql://localhost:3306/day16")
public static Connection getConnection() throws Exception{
//加载类的字节码对象
Class<Conn> clazz=Conn.class; //获取此方法
Method method = clazz.getMethod("getConnection"); //获取注解对象
JDBCInfo info = method.getAnnotation(JDBCInfo.class); //获取各个已赋值的属性
String driverClass = info.DriverClass();
String url = info.Url();
String user = info.User();
String pwd = info.Pwd(); //注册驱动
Class.forName(driverClass); //获得连接
return DriverManager.getConnection(url, user, pwd);
}
}

打印结果

注解的简单用法就记这么多了,更深入的研究待以后来搞

Java元注解,简单案例的更多相关文章

  1. 使用Java元注解和反射实现简单MVC框架

    Springmvc的核心是DispatcherServlet来进行各种请求的拦截,进而进行后续的各种转发处理.流程图如下: 说明:客户端发出一个http请求给web服务器,web服务器对http请求进 ...

  2. Spring注解与Java元注解小结

    注解 Annotation 基于注解的开发,使得代码简洁,可读性高,简化的配置的同时也提高了开发的效率,尤其是SpringBoot的兴起,随着起步依赖和自动配置的完善,更是将基于注解的开发推到了新的高 ...

  3. Java元注解—— @Retention @Target @Document @Inherited

    java中元注解有四个: @Retention @Target @Document @Inherited: @Retention:注解的保留位置 @Retention(RetentionPolicy. ...

  4. Java元注解@Retention规则

    @Retention是java当中的一个元注解,该元注解通常都是用于对软件的测试 1.适用方式:     @Retention(RetentionPolicy.RUNTIME)     @interf ...

  5. Java 元注解

    元注解@Target,@Retention,@Documented,@Inherited * * @Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括: * Elemen ...

  6. Java元注解

    元注解是指注解的注解,包括@Retention @Target @Document @Inherited四种. 1.@Retention: 定义注解的保留策略@Retention(RetentionP ...

  7. java元注解(注解在注解上的注解)

    //ElementType.TYPE 给类.接口.枚举上使用 @Target(ElementType.TYPE)//给注解进行注解,表示该注解可以用在什么地方 //@Retention(Retenti ...

  8. java 导出excel(简单案例)

    public class Student { private int id; private String name; private int age; private Date birth; pub ...

  9. java元注解 @Retention注解使用

    @Retention定义了该Annotation被保留的时间长短: 1.某些Annotation仅出现在源代码中,而被编译器丢弃: 2.另一些却被编译在class文件中,注解保留在class文件中,在 ...

随机推荐

  1. 解决:Elipse配置Jython Interpreters时报错Error: Python stdlib source files not found

    今天学习lynnLi的博客monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四)时,遇到了一个问题,即: lynnLi给出的解决办法是:将Python下的Lib拷贝 ...

  2. Redis 简单介绍(知识整理笔记)

    前言: Redis 介绍:轻量级.Key-Value.内存数据库.支持持久化 Redis 数据结构:string(字符串),hash(哈希),list(列表),set(集合)及 zset (sorte ...

  3. cassandra集群环境搭建——注意seeds节点,DHT p2p集群管理难道初始化都应如此吗?

    解压cassandra的安装包后可以查看主要的配置文件,都在conf/目录下,conf/cassandra.yaml比较重要,其中需要着重注意的有以下一些配置项: cluster_name: 'TC0 ...

  4. python--基本代码规范

    python代码规范:一.标识符 所谓的标识符就是对变量.常量.函数.类等对象起的名字 python语言在任何场景都严格区分大小写!!! python对于标识符的命名有如下规定: 第一个字符必须是字母 ...

  5. MAMP软件的安装和使用

    MAMP Pro软件是一款很好的在MAC下面运行的网站集成环境软件,功能强大,配置简单,十分便于本地调试,其由Apache+MySQL+PHP+动态DNS配置构成,PHP的版本可以动态切换到最新版.无 ...

  6. 浅学soap--------3

    //person.wsdl 标签 <?xml version="1.0" ?> <definitions name="person" targ ...

  7. CodeForces - 138C: Mushroom Gnomes - 2 (线段树&概率&排序)

    One day Natalia was walking in the woods when she met a little mushroom gnome. The gnome told her th ...

  8. 2017-2018-1 20179215《Linux内核原理与分析》第十二周作业

    Sql注入基础原理介绍 分组:和20179205王雅哲共同完成实验 一.实验说明 1.1 sql注入  SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组 ...

  9. NOIp2018集训test-10-24(am&pm)

    李巨连续AK三场了,我跟南瓜打赌李巨连续AK七场,南瓜赌李巨连续AK五场. DAY1 T1 qu 按题意拿stack,queue和priority_que模拟即可.特判没有元素却要取出的情况. T2 ...

  10. java编程思想第五章初始化与清理

    5.1使用构造器确保初始化: 构造器与一般方法一样,但是没有返回值,且其方法名与类名完全相同. 不接受任何参数的构造器成为默认构造器,也叫无参构造器. 5.2 方法重载: 为什么会有方法重载? 构造器 ...