界面和@interface在java中有什么区别?

自从90年代末在大学使用JBuilder以来,我一直没有碰过Java,所以我有点失去联系 - 无论如何,本周我一直在研究一个小型Java项目,并使用Intellij IDEA作为我的IDE ,从我的常规.Net开发中改变步伐。

我注意到它支持添加接口和@interface,什么是@interface,它与普通接口有什么不同?

public interface Test {
}

public @interface Test {
}

我已经做了一些搜索,但找不到涉及@interface的大量有用信息。


@符号表示注释类型定义。

这意味着它不是一个真正的接口,而是一种新的注释类型 - 用作函数修饰符,比如@override。

看到这个主题的javadocs条目。


接口:

通常,一个接口公开一个合约而不公开底层的实现细节。 在面向对象编程中,接口定义暴露行为的抽象类型,但不包含逻辑。 实现由实现接口的类或类型定义。

@interface :(标注类型)

以下面的示例为例,其中有很多评论:

public class Generation3List extends Generation2List {

   // Author: John Doe
   // Date: 3/17/2002
   // Current revision: 6
   // Last modified: 4/12/2004
   // By: Jane Doe
   // Reviewers: Alice, Bill, Cindy

   // class code goes here

}

除此之外,您可以声明注释类型

 @interface ClassPreamble {
   String author();
   String date();
   int currentRevision() default 1;
   String lastModified() default "N/A";
   String lastModifiedBy() default "N/A";
   // Note use of array
   String[] reviewers();
}

然后可以如下注释一个类:

@ClassPreamble (
   author = "John Doe",
   date = "3/17/2002",
   currentRevision = 6,
   lastModified = "4/12/2004",
   lastModifiedBy = "Jane Doe",
   // Note array notation
   reviewers = {"Alice", "Bob", "Cindy"}
)
public class Generation3List extends Generation2List {

// class code goes here

}

PS: 许多注释代码中的注释。

参考:http://docs.oracle.com/javase/tutorial/java/annotations/declaring.html


interface关键字表示您正在使用Java声明传统的接口类。
@interface关键字用于声明新的注释类型。

有关语法的描述,请参阅注释docs.oracle教程。
如果您真的想深入了解@interface含义,请参阅JLS。

链接地址: http://www.djcxy.com/p/87891.html

上一篇: What's the difference between interface and @interface in java?

下一篇: scheduling tasks in linux kernel module everyday at a user provided time