界面和@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。
上一篇: What's the difference between interface and @interface in java?
下一篇: scheduling tasks in linux kernel module everyday at a user provided time