sirve - ¿Cuál es la diferencia entre la interfaz y la interfaz @ en java?
public interface java (4)
El símbolo @ denota una definición de tipo de anotación.
Eso significa que no es realmente una interfaz, sino un nuevo tipo de anotación, que se utilizará como un modificador de función, como @override .
Ver esta entrada javadocs sobre el tema.
No he tocado Java desde que usé JBuilder a fines de los 90 mientras estaba en la Universidad, así que estoy un poco fuera de contacto. Al menos, he estado trabajando en un pequeño proyecto de Java esta semana y uso Intellij IDEA como mi IDE , para un cambio de ritmo de mi desarrollo regular .Net.
Me doy cuenta de que tiene soporte para agregar interfaces y @interfaces, ¿qué es un @interface y en qué se diferencia de una interfaz normal?
public interface Test {
}
contra
public @interface Test {
}
He hecho un poco de búsqueda, pero no pude encontrar una gran cantidad de información útil que se refiera a @interface.
La palabra clave de la interface
indica que está declarando una clase de interfaz tradicional en Java.
La palabra clave @interface
se utiliza para declarar un nuevo tipo de anotación.
Consulte el http://docs.oracle.com/javase/tutorial/java/annotations/declaring.html sobre las anotaciones para obtener una descripción de la sintaxis.
Vea el JLS si realmente quiere entrar en los detalles de lo que significa @interface
.
interfaz:
En general, una interfaz expone un contrato sin exponer los detalles de implementación subyacentes. En la programación orientada a objetos, las interfaces definen tipos abstractos que exponen el comportamiento, pero no contienen lógica. La implementación está definida por la clase o tipo que implementa la interfaz.
@interface: (Tipo de anotación)
Tomemos el siguiente ejemplo, que tiene muchos comentarios:
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
}
En lugar de esto, puede declarar un tipo de anotación
@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();
}
que luego puede anotar una clase de la siguiente manera:
@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
}
PD: Muchas anotaciones reemplazan los comentarios en el código.
Referencia: http://docs.oracle.com/javase/tutorial/java/annotations/declaring.html
interface:
define el contrato para una clase que lo implementa
@interface:
define el contrato para una anotación