Java:@interface,接口,非接口?

Java SE5引入了一项新的语言特性Annotation,中文译为注解。

注解的特殊之处在于,它的定义与接口十分类似,比如都同样使用interface关键字,以及注解元素的声明与接口方法声明类似。

注解的定义如下所示:

public @interface ExampleAnnotation{
    public String exampleElement();
}

粗略的看去,这好像是一个接口的定义,但仔细一看它与接口又相区别。特别之处在于,在关键字interface之前多了一个符号@。

注解的使用方式则如下所示:

@ExampleAnnotation(exampleElement="Hello,Class")
public class ExampleClass{
    @ExampleAnnotation(exampleElement="Hello,Method")
    public void exampleMethod(){}
}

从使用方式上看,注解通常置于类型、方法等类的各种组成元素之上,并且在注解名称前同样也有一个符号@。

概括来说,注解与接口的相似之处有以下几点:

1.有相似的语法定义,包括使用interface关键字,都有相似的组成部分;

2.注解和接口都是一种类型,可以用在申明变量的任何地方,但都不能使用new关键字进行实例化。

它们的不同之处在于:

1.在定义中的申明的内容,对接口来说是方法,但对注解来说叫作元素。并且注解在interface关键字前,比接口多了一个符号@。

2.两者的应用场景不同:接口用于描述具体实现类的公共方法,通常被类使用implements关键字声明实现;注解用于为某一类型添加描述信息,其使用方式从语法上看,与public、static等修饰符相同。

3.接口之间可以使用extends关键字进行继承;而注解之间不能使用extends关键字进行继承。

4.接口可以被某一类型通过implements关键字用于实现多重继承;注解不能被用于其它类型进行继承。

因此,注解虽然从定义上看与接口具有极其相似的语法,且都是一种类型。但本质上它们是两种独立的Java语言特性,且都有各自特定的使用场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值