¿Cuál es la diferencia entre la interfaz y el @interfaz en java?

No he tocado Java ya que el uso de JBuilder en el finales de los 90’s, mientras que en la Universidad, así que estoy un poco fuera de contacto – en cualquier caso, he estado trabajando en un pequeño proyecto de Java esta semana, y el uso de Intellij IDEA de como mi IDE, para un cambio de ritmo de mi regulares .Red de desarrollo.

Me doy cuenta de que tiene soporte para la adición de interfaces y @interfaces, lo que es un @interfaz, y en qué se diferencia de una normal de la interfaz?

public interface Test {
}

vs

public @interface Test {
}

He hecho un poco de búsqueda, pero no podía encontrar una gran cantidad de información útil referirse a @interfaz.

InformationsquelleAutor Bittercoder | 2009-05-27

5 Kommentare

  1. 280

    La @ símbolo denota un tipo de anotación definición.

    Que significa que es no realmente de una interfaz, sino más bien un nuevo tipo de anotación, para ser utilizado como una función de modificador, como @override.

    Ver este javadocs entrada sobre el tema.

    • Muchas gracias, es bueno saberlo. Entonces, ¿cuál fue la razón para llamarlo @interfaz, en lugar de decir @anotación me pregunto.. parece una innecesaria sobrecarga plazo.
    • El tutorial y el JLS aluden a una anotación de ser un tipo especial de interfaz. No parece ser de mucha discusión que hay sobre el tema, pero javarunner.blogspot.com/2005/01/annotations-in-java-15.html, explica que las anotaciones son una forma implícita de la extensión de la Anotación de la interfaz y @ y de interfaz se utiliza para juntos diferenciarse de una interfaz regular. Usted también puede querer leer la especificación JSR para anotaciones.
    • los documentos no mencionan: «palabra clave de la interfaz está precedido por el signo de arroba (@) (@ = A, como en el tipo de anotación)». Eso es todo el fundamento que puedo encontrar w.r.t. nomenclatura.
  2. 93

    interfaz:

    En general, una interfaz expone un contrato, sin necesidad de exponer el subyacente de los detalles de implementación. En la Programación Orientada a Objetos, interfaces definen tipos abstractos que exponer el comportamiento, pero no contienen la lógica. La aplicación está definido por el tipo o clase que implementa la interfaz.

    @interfaz : (tipo de Anotación)

    Tomar el ejemplo de abajo, que tiene un montón de 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
    
    }

    Lugar de esto, usted 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 pueden anotar en 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
    
    }

    PS:
    Muchas anotaciones reemplazar los comentarios en el código.

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

    • bonita explicación
    • Que fue realmente útil. Yo no sabía de Java podría hacer esto.
    • Esto debe ser aceptado respuesta.
    • La respuesta anterior incluye este enlace, que es donde esta información. He encontrado que es útil para encontrar más información acerca de este tema. docs.oracle.com/javase/tutorial/java/annotations/declaring.html
  3. 31

    La interface palabra clave indica que usted está declarando una tradicional clase de interfaz en Java.

    El @interface palabra clave se utiliza para declarar un nuevo tipo de anotación.

    Ver docs.oracle tutorial sobre las anotaciones para una descripción de la sintaxis.

    Ver el JLS si usted realmente desea conseguir en los detalles de lo @interface medios.

  4. 15

    interface: define el contrato para una clase que implementa

    @interface: define el contrato para una anotación

  5. 2

    interfaz
    en el lenguaje de programación Java es un tipo abstracto que se utiliza para especificar un comportamiento que las clases deben implementar. Son similares a los protocolos. Las Interfaces se declaran con la palabra clave interface

    @interfaz
    se utiliza para crear su propio (personalizado) anotaciones de Java. Las anotaciones se define en su propio archivo, como una clase de Java o de la interfaz. Aquí es costumbre Java anotación ejemplo:

    @interface MyAnnotation {
    
        String   value();
    
        String   name();
        int      age();
        String[] newNames();
    
    }

    Este ejemplo se define una anotación llama MyAnnotation que tiene cuatro elementos. Aviso de la @interfaz de palabras clave. Esto le indica al compilador de Java que esta es una Java de anotación definición.

    Observe que cada elemento se define de manera similar a una definición de método en una interfaz. Tiene un tipo de datos y un nombre. Usted puede utilizar todos los tipos de datos simples como elemento de los tipos de datos. También puede utilizar matrices como el tipo de datos. Usted no puede utilizar objetos complejos como el tipo de datos.

    A utilizar la anterior anotación, puede utilizar un código como este:

    @MyAnnotation(
        value="123",
        name="Jakob",
        age=37,
        newNames={"Jenkov", "Peterson"}
    )
    public class MyClass {
    
    
    }

    De referencia – http://tutorials.jenkov.com/java/annotations.html

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea