JAVA 注解-学习篇(2)

本文深入探讨Java自定义注解的创建与使用方法,包括注解声明、参数设置及元注解的应用,并通过实例演示如何在不同上下文中运用自定义注解。

本文内容承接Java 注解-学习篇(1)https://my.oschina.net/u/2948232/blog/791668

自定义注解

  1. 声明 @interface用来声明一个注解,即在声明一个类时,把class变成@interface。就能成功声明一个注解了。
  2. 参数 其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。
  3. 调用 根据元注解规定的范围,使用@注解名(参数列表)调用。
  4. 应用场景 要用好注解,必须熟悉java 的反射机制,注解的解析完全依赖于反射

第一个注解

这是一个Marker annotation(类体里面没有成员)测试注解。

package anotations;

/**
 * 自定义注解
 * Created by Administrator on 2016/11/26.
 */
public @interface Controller {
}

注解的调用,因为没有规定范围

package controller;

import anotations.Controller;

/**
 * Created by Administrator on 2016/11/26.
 */
@Controller//在类前面
public class ControllerDemo {
    @Controller//在属性前面
    private String str;
    
    @Controller//在方法前面
    public void say(){
        System.out.println("hello world");
    }
}

###使用元注解修饰 主要使用@Retention、@Target元注解修饰,元注解说明参考https://my.oschina.net/u/2948232/blog/791668 。下面案例注解可以在虚拟机中运行,这个主要方便测试,以及解析。

import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 * Created by Administrator on 2016/11/26.
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Controller {
}

###注解参数 注解中声明参数,返回值类型只能是基本类型、Class、String、enum

package anotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 * Created by Administrator on 2016/11/26.
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Controller {
    String str();
    int id() default 0;
    Class<Long> gid();
}

调用有参数的注解需要注意;

  1. 只有一个参数时,可以在调用时不使用参数名。
  2. 参数有default值时,可以在调用时不出现在参数列表中。下面的案例中id列表是可以不填写的。
package controller;

import anotations.Controller;

/**
 * Created by Administrator on 2016/11/26.
 */
@Controller(str="test",id=1,gid=Long.class)//在类前面
public class ControllerDemo {
    private String str;

    public void say(){
        System.out.println("hello world");
    }
}

还有最重要的一步,我们学习注解,就是为了解析注解,这是最为核心的一步。请看下一个章节。

未完待续!!

转载于:https://my.oschina.net/u/2948232/blog/794418

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值