• 【注解】

程序中有 注释 和注解

* 注释:给开发人员.

* 注解:给计算机看的.

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

    • 【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. poj2289二分图多重匹配

    题意:给你一张二分图,求右边点到汇点的最小容量(保证流量为n)是多少 题解:二分答案,每次重新建边跑最大流,看是不是为n就好了 #include<map> #include<set& ...

  2. nyojb 2359 巴什博弈变形

    http://acm.nyist.me/JudgeOnline/problem.php?id=2359 2359: 巴什博弈? 时间限制: 1 Sec  内存限制: 30 MB提交: 237  解决: ...

  3. deep learning (六)logistic(逻辑斯蒂)回归中L2范数的应用

    zaish上一节讲了线性回归中L2范数的应用,这里继续logistic回归L2范数的应用. 先说一下问题:有一堆二维数据点,这些点的标记有的是1,有的是0.我们的任务就是制作一个分界面区分出来这些点. ...

  4. SFTP服务器使用指南(1)——安装搭建freeSSHd

    为什么选择freeSSHd 此软件免费 功能非常丰富且强大,同时支持软件用户.本地系统用户和域用户验证 对各用户选择性开放SFTP,Telnet, Tunneling服务 功能和服务完全不受限制的使用 ...

  5. python any函数

    pyhton的any() 函数: 判断给定的可迭代参数 iterable : 全部为 False,返回 False; 至少有一个为 True,则返回 True. 元素除了是 0.空.FALSE 外都算 ...

  6. 数据清洗记录,pandas

    pandas数据清洗:http://www.it165.net/pro/html/201405/14269.html data=pd.Series([1,2,3,4]) data.replace([1 ...

  7. 2017/2/22怎么判断mongodb服务已经启动了?

    打开任务管理器,看看服务下面是否有个MongoDB,有就表示成功

  8. 基于JQ的简单左右轮播图

    // 轮播图 主要实现思想: a.第一层div,设置overflow为hidden. b.里面是一个ul,每个li里面有个img或者为每个li设置背景图片也可以. c.li设置为左浮动,排成一行,还有 ...

  9. Python函数-bool()

    bool([x]) 作用: 将x转换为Boolean类型,如果x缺省,返回False,bool也为int的子类: 参数x: 任意对象或缺省:大家注意到:这里使用了[x],说明x参数是可有可无的,如果不 ...

  10. MongoDb学习网站

    http://www.runoob.com/mongodb/mongodb-window-install.html