黑马程序员--08.注解--03【自定义注解】【为注解添加属性】

注解----3

自定义注解 为注解添加属性   反射操作注解对象

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

1.    自定义注解

(1). 自定义注解的格式

[1]. Java中使用“@interface关键字自定义注解类型

[2]. 定义格式

public @interface注解名{…}

【注意】不能使用public interface注解名 extendsjava.lang.annotation.Annotation{…}来自定义接口。尽管所有的接口类型都是直接或者间接地实现了java.lang.annotation.Annotation这个公共接口。

@interface隐含注解extendsjava.lang.annotation.Annotation

[3]. 注解中的成员方法也是成员变量

{1}. 对内成员方法的形式定义,不能抛出异常,不能有参数

       【结论】注解内的成员方法一定是public abstract并且无异常,空参的方法。

示例:编译无法通过注解中含有参数的成员方法


{2}. 对外成员变量的形式来进行访问

两者是一回事。

{3}. 以成员变量进行访问的时候成员变量类型就是成员方法返回值类型

[4]. 注解中的成员方法默认是public abstract

由于注解一种特殊的接口,并且内部使用成员方法的形式来定义,所以注解中的成员方法的默认类型就和接口中的成员方法一样,都是publicabstract

【结果】这样由于public的成员方法,也就可以直接对这个成员方法在外部进行直接访问。由于注解的成员方法在外部以成员变量的形似被访问,所以,就表现出来直接访问这个注解的成员变量(实际为成员方法 public 可以被直接访问)

[4]. 为什么对内以成员方法的方式进行定义,对外以成员变量的形式进行访问?

【个人猜想**

{1}. 接口中的成员变量实际上默认是public static final的,是全局常量,所以一旦接口的字节码文件被加载内存之后接口中的成员变量 (实际为全局常量)的值必须固定并且被所有实现这个接口的实例

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值