五、枚举和注解 enum type annotation type

一、枚举暂时跳过。因为Android开发,枚举量级有点重,尽量用常量值

二、注解

第35条 注解优先于命名模式

Java1.5发行前,一般使用命名模式 naming pattern,表示有些程序元素需要通过某种方法进行特殊处理。如,JUnit测试框架原来要求用户一定要用test作为测试方法名称的开头。这种做法有几个缺点:

  1. 文字拼写容易拼错,且没有任何提示
  2. 无法确保它们只用于相应的程序元素上
  3. 没有提供将特殊处理用到的参数值与程序元素关联起来的方法
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {
}

上面的@Retention @Target 称为元注解 meta-annotation。用于定义新的注解类型。

@Test
    public static void add(int i, int j) {}

上面@Test,称作标记注解(marker annotion)

注解处理常用的:

Class.getDeclaredMethods()
Method.isAnnotationPresent(Test.class)
Method.invoke();
Method.getAnnotation(ExceptionTest.class).value()
Class.isInstance(Class)

既然有了注解,就完全没有必要再使用命名模式了。

除了工具开发者,或是基础库开发者之外,大多数程序员都不必定义注解类型。但是所有的程序员都应该使用Java平台所提供的预定义的注解类型。还要考虑使用IDE或静态分析工具所提供的任何注解。这些注解可以提升诊断信息的质量。

第36条 坚持使用Override注解

应该在想要覆盖父类的每个方法上使用Override注解。在编译期及时发现 方法名 或 方法签名 写错的问题。

第37条 用标记接口定义类型

标记接口 marker interface 与 标记注解 marker annotation

标记接口的优点:

  1. 标记接口定义的类型,由实例实现;此类型可以在编译时就发现错误,而不是像注解那样在运行时才能发现错误。
  2. 可以被更加精确地进行锁定。注解类型可以用@Target(ElementType.TYPE)声明,这样它可以被用在任意的类或接口上。而标记接口可以预定为某具体领域相关的类才能使用。

标记注解的优点:

  1. 可以在同一个程序元素上,添加多个注解,以赋予元素更多的意义
  2. 它们是更大注解机制的一部分。因此,注解在那些支持注解作为编程元素之一的框架中同样具有一致性。??这一点无法理解,什么意思??

如果定的注解类型的Target是TYPE时,要考虑一下,是否可以用标记接口替代,以利用编译时就能发现错误的优势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛克Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值