[java] Java에서 interface와 @interface의 차이점은 무엇입니까?

대학에서 90 년대 후반에 JBuilder를 사용한 이후로 Java를 다루지 않았으므로 이번 주에 작은 Java 프로젝트를 작업하고있는 Intellij IDEA를 IDE로 사용하여 어느 정도 속도를 거두었습니다. , 정기적 인 .Net 개발에서 속도의 변화를 위해.

인터페이스와 @interfaces를 추가 할 수 있고 @interface가 무엇이고 일반 인터페이스와 어떻게 다릅니 까?

public interface Test {
}

vs.

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

}

추신 :
많은 주석이 코드의 주석을 대체합니다.

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


답변

interface키워드는 자바에서 기존의 인터페이스 클래스를 선언하고 있음을 나타냅니다. 키워드는 새로운 주석 형을 선언하는 데 사용됩니다.
@interface

구문에 대한 설명은 주석에 대한 docs.oracle 자습서 를 참조하십시오 . 의미 가 무엇인지 자세히 알고 싶다면 JLS를
참조하십시오 .@interface


답변

interface: 그것을 구현하는 클래스의 계약을 정의

@interface: 주석 계약을 정의합니다


답변


Java 프로그래밍 언어의 인터페이스 는 클래스가 구현해야하는 동작을 지정하는 데 사용되는 추상 유형입니다. 프로토콜과 비슷합니다. 인터페이스는 interface 키워드를 사용하여 선언됩니다

@interface
는 고유 한 (사용자 정의) Java 주석을 작성하는 데 사용됩니다. 주석은 Java 클래스 또는 인터페이스와 마찬가지로 자체 파일에 정의됩니다. 다음은 사용자 정의 Java 어노테이션 예제입니다.

@interface MyAnnotation {

    String   value();

    String   name();
    int      age();
    String[] newNames();

}

이 예에서는 네 가지 요소가있는 MyAnnotation이라는 주석을 정의합니다. @interface 키워드를 주목하십시오. 이것은 Java 컴파일러에게 이것이 Java 어노테이션 정의임을 알립니다.

각 요소는 인터페이스의 메소드 정의와 유사하게 정의됩니다. 데이터 유형과 이름이 있습니다. 모든 기본 데이터 유형을 요소 데이터 유형으로 사용할 수 있습니다. 배열을 데이터 유형으로 사용할 수도 있습니다. 복잡한 개체는 데이터 형식으로 사용할 수 없습니다.

위의 주석을 사용하려면 다음과 같은 코드를 사용할 수 있습니다.

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


}

참조 -http : //tutorials.jenkov.com/java/annotations.html


답변