В чем разница между interface и @interface в java?
Я не касался Java с момента использования JBuilder в конце 90 - х годов во время учебы в университете, поэтому я немного не в курсе-во всяком случае, на этой неделе я работал над небольшим проектом Java и использовал Intellij IDEA в качестве моей IDE, для изменения темпов моей обычной разработки .Net.
Я заметил, что он поддерживает добавление интерфейсов и @интерфейсов, что такое @интерфейс, и как он отличается от обычного интерфейса?
public interface Test {
}
и
public @interface Test {
}
Я сделал немного поиска, но не смог найти много полезной информации, относящейся к @interface.
4 ответов:
The @ символ обозначает определение типа аннотации.
Что это значит не действительно интерфейс, но скорее новый тип аннотации -- для использования в качестве модификатора функции, например @ override.
посмотреть этот запись javadocs на эту тему.
интерфейс:
В общем случае интерфейс предоставляет контракт без предоставления базовых деталей реализации. В объектно-ориентированном программировании интерфейсы определяют абстрактные типы, которые предоставляют поведение, но не содержат логики. Реализация определяется классом или типом, который реализует интерфейс.
@интерфейс : (типа аннотации)
возьмите пример ниже, который имеет много комментариев:
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
The
interfaceключевое слово указывает, что вы объявляете традиционный класс интерфейса в Java.
Элемент@interfaceключевое слово используется для объявления нового типа аннотация.посмотреть docs.oracle tutorial на аннотации для описания синтаксиса.
Смотрите JLS если вы действительно хотите углубиться в детали того, что@interfaceсредства.
interface:определяет контракт для класса, который реализует его
@interface:определяет контракт для аннотации
Comments