자바에서의 인터페이스와 @interface의 차이점은 무엇입니까?
대학 재학 중 90년대 후반 JBuilder를 사용한 이후 자바에 손을 댄 적이 없기 때문에 이번 주에 작은 자바 프로젝트를 진행하고 Intellij IDEA를 IDE로 사용하여 평소와는 다른 속도를 내고 있습니다.네트워크 개발
인터페이스 및 @인터페이스 추가가 지원되고 있는 것을 알 수 있습니다.@인터페이스란 무엇인가요?또, 통상의 인터페이스와 어떻게 다른가요?
public interface Test {
}
대.
public @interface Test {
}
조금 검색을 해봤지만 @interface에 관한 유용한 정보를 많이 찾을 수 없었습니다.
@ 기호는 주석 유형 정의를 나타냅니다.
즉, 실제로는 인터페이스가 아니라 @override와 같은 함수 수식자로 사용되는 새로운 주석 유형입니다.
인터페이스:
일반적으로 인터페이스는 기본 구현 세부사항을 노출하지 않고 계약을 노출합니다.객체 지향 프로그래밍에서 인터페이스는 동작을 노출하지만 논리는 포함하지 않는 추상 유형을 정의합니다.구현은 인터페이스를 구현하는 클래스 또는 유형에 따라 정의됩니다.
@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 튜토리얼을 참조하십시오.
자세한 내용은 JLS를 참조하십시오.@interface
수단.
interface:
그것을 실장하는 클래스의 계약을 정의합니다.
@interface:
주석 계약을 정의합니다.
Java 프로그래밍 언어의 인터페이스는 클래스가 구현해야 하는 동작을 지정하는 데 사용되는 추상 유형입니다.프로토콜과 유사합니다.인터페이스는 interface 키워드를 사용하여 선언됩니다.
@interface는 사용자 정의 Java 주석을 작성하기 위해 사용됩니다.주석은 Java 클래스 또는 인터페이스와 마찬가지로 자체 파일에 정의됩니다.다음으로 커스텀 Java 주석의 예를 나타냅니다.
@interface MyAnnotation {
String value();
String name();
int age();
String[] newNames();
}
이 예에서는 4개의 요소가 있는 MyAnnotation이라는 주석을 정의합니다.@interface 키워드에 주의해 주세요.이것은 Java 주석 정의임을 Java 컴파일러에 알립니다.
각 요소는 인터페이스의 메서드 정의와 동일하게 정의됩니다.데이터 유형과 이름이 있습니다.모든 기본 데이터 유형을 요소 데이터 유형으로 사용할 수 있습니다.배열을 데이터 유형으로 사용할 수도 있습니다.복잡한 개체는 데이터 유형으로 사용할 수 없습니다.
위의 주석을 사용하려면 다음과 같은 코드를 사용할 수 있습니다.
@MyAnnotation(
value="123",
name="Jakob",
age=37,
newNames={"Jenkov", "Peterson"}
)
public class MyClass {
}
레퍼런스 - http://tutorials.jenkov.com/java/annotations.html
언급URL : https://stackoverflow.com/questions/918393/whats-the-difference-between-interface-and-interface-in-java
'source' 카테고리의 다른 글
'더블 프리 또는 파손' 오류를 추적하는 방법 (0) | 2022.07.17 |
---|---|
컴파일러가 "initializer 누락"이라는 경고를 보내는 이유는 무엇입니까?구조가 초기화되지 않았습니까? (0) | 2022.07.17 |
nuxt 레이아웃 내에서 메서드를 실행하기 위한 vuex 상태 변경 감지 (0) | 2022.07.17 |
Java 멀티스레딩에서 Count Down Latch는 어떻게 사용됩니까? (0) | 2022.07.17 |
ld.exe: 출력 파일을 열 수 없습니다...: 권한이 거부되었습니다. (0) | 2022.07.17 |