Java의 메모 상세 정보 및 예제 코드
무엇을 할 수 있는지 주해하다
Java의 메모는 일반적으로 다음과 같은 역할을 합니다.
간단한 Java 메모는 @Entity와 유사합니다.그중@의 뜻은 컴파일러에게 이것이 주석이라는 것을 알려주는 것이다.Entity는 메모의 이름입니다.보통 파일에서 다음과 같이 쓴다
public @interface Entity {
}
주석 요소
Java 메모는 요소를 사용하여 속성이나 매개변수와 유사한 값을 설정할 수 있습니다.요소가 포함된 메모 예제 코드 정의
public @interface Entity {
String tableName();
}
요소가 포함된 메모 예제 코드 사용
@Entity(tableName = "vehicles")
상기 주석의 요소 이름은tableName이고 설정된 값은vehicles입니다.요소가 없는 메모는 괄호를 사용할 필요가 없습니다.
메모에 여러 요소가 포함된 경우 다음 방법을 사용합니다.
@Entity(tableName = "vehicles", primaryKey = "id")
만약 주해가 단지 하나의 원소만 있다면, 통상적으로 우리의 작법은 이렇다
@InsertNew(value = "yes")
그러나 이런 상황에서 원소의 이름이value일 때만 우리는 간단명료하게 쓸 수 있다. 즉, 원소의 이름value를 기입할 필요가 없다. 효과는 다음과 같다.
@InsertNew("yes")
메모 사용
주해는 코드의 이 요소들을 수식할 수 있다
@Entity
public class Vehicle {
@Persistent
protected String vehicleName = null;
@Getter
public String getVehicleName() {
return this.vehicleName;
}
public void setVehicleName(@Optional vehicleName) {
this.vehicleName = vehicleName;
}
public List addVehicleNameToList(List names) {
@Optional
List localNames = names;
if(localNames == null) {
localNames = new ArrayList();
}
localNames.add(getVehicleName());
return localNames;
}
}
내장형 Java 메모Java에는 컴파일러에 명령을 제공하는 데 사용되는 세 가지 내장 메모가 있습니다.그것들은
클래스, 방법, 속성을 표시할 수 있습니다.
위의 세 요소가 더 이상 사용되지 않으면 @Deprecated 메모를 사용합니다.
코드가 @Deprecated 메모의 클래스, 메서드 또는 속성을 사용하는 경우 컴파일러가 경고합니다.
@Deprecated 사용은 간단합니다. 다음은 버려진 클래스를 설명하는 것입니다.
@Deprecated
public class MyComponent {
}
@Deprecated 메모를 사용한 후에 대응하는 @deprecated JavaDoc 기호를 함께 사용하고 왜 이런 종류, 방법이나 속성이 사용되지 않고 대체 방안이 무엇인지 설명하는 것을 권장합니다.
@Deprecated
/**
@deprecated This class is full of bugs. Use MyNewComponent instead.
*/
public class MyComponent {
}
@Override@Override 메모는 상위 클래스를 다시 쓰는 방법을 수정하는 데 사용됩니다.만약 부류를 다시 쓰지 않는 방법이 이 주석을 사용한다면, 컴파일러는 오류를 알릴 것입니다.
실제로 하위 클래스에서 부모 클래스나 인터페이스를 다시 쓰는 방법은 @Overide가 필요하지 않습니다.그러나 이 주석을 사용하는 것을 권장합니다. 어떤 경우 부류의 방법의 이름을 수정했다고 가정하면 이전에 다시 쓴 부류는 다시 쓰는 것이 아닙니다. @Overide가 없으면 이 부류의 방법을 눈치채지 못할 것입니다.이 주석 수식이 있으면, 컴파일러는 너에게 이 정보를 알려줄 것이다.
Override 메모를 사용한 예
public class MySuperClass {
public void doTheThing() {
System.out.println("Do the thing");
}
}
public class MySubClass extends MySuperClass{
@Override
public void doTheThing() {
System.out.println("Do it differently");
}
}
@SuppressWarnings@SuppressWarnings는 컴파일러가 경고 메시지를 생성하는 것을 억제하는 데 사용됩니다.
수식 가능한 요소는 클래스, 방법, 방법 매개 변수, 속성, 국부 변수
사용 장면: 우리가 사용하는 방법을 사용하지 않거나 안전하지 않은 유형 변환을 하면 컴파일러가 경고를 생성합니다.우리는 이 방법을 위해 늘릴 수 있다
@SuppressWarnings 메모를 사용하여 컴파일러의 경고 생성을 억제합니다.
주의: @SuppressWarnings 주석을 사용하고 가까운 원칙을 사용합니다. 예를 들어 한 가지 방법으로 경고가 나타나면 우리는 가능한 한 @SuppressWarnings 주석을 사용합니다. 주석 방법이 있는 종류가 아니라 @SuppressWarnings 주석을 사용합니다.두 개 모두 컴파일러의 경고 생성을 억제할 수 있지만 범위가 작을수록 좋다. 범위가 넓어서 우리가 이 종류의 다른 방법의 경고 정보를 발견하는 데 불리하기 때문이다.
사용 예
@SuppressWarnings
public void methodWithWarning() {
}
자신만의 메모 만들기Java에서 우리는 자신의 주석, 주석, 클래스, 인터페이스 파일처럼 자신의 파일에 정의할 수 있다.아래와 같다
@interface MyAnnotation {
String value();
String name();
int age();
String[] newNames();
}
위의 코드는 4개의 요소가 있는 MyAnnotation이라는 메모를 정의합니다.다시 한 번 강조하지만, @interface라는 키워드는 자바 컴파일러에게 이것이 주석이라는 것을 알려 줍니다.자세히 보면, 주해 원소의 정의는 인터페이스와 매우 유사하다는 것을 발견할 수 있다.이러한 요소에는 유형과 이름이 있습니다.이러한 유형은
@MyAnnotation(
value="123",
name="Jakob",
age=37,
newNames={"Jenkov", "Peterson"}
)
public class MyClass {
}
주의, 우리는 모든 주석 요소에 값을 설정해야 한다. 하나도 빠질 수 없다.메모 요소 기본값
메모의 요소에 대해 기본값을 설정할 수 있습니다.
@interface MyAnnotation {
String value() default "";
String name();
int age();
String[] newNames();
}
상기 코드는value 요소의 기본값을 빈 문자열로 설정했습니다.우리가 사용할 때,value의 값을 설정하지 않고,value가 빈 문자열 기본값을 사용하도록 할 수 있습니다.예제 코드 사용
@MyAnnotation(
name="Jakob",
age=37,
newNames={"Jenkov", "Peterson"}
)
public class MyClass {
}
@Retention@Retention 은 메모를 수정하는 데 사용되는 메모입니다. 이 메모를 사용하면 할 수 있습니다.
콜아웃이class 파일에 기록되는지 여부를 조정합니다
class 파일에서 주석을 실행할 때 볼 수 있는지 여부를 제어합니다
제어는 매우 간단하다. 아래의 세 가지 전략 중 하나를 사용하면 된다.
RetentionPolicy.SOURCE 는 메모가 소스 코드에만 있고 존재하지 않음을 나타냅니다.class 파일, 더 실행할 수 없을 때 볼 수 있습니다.일반적인 메모는 @Override, @SuppressWarnings입니다.
RetentionPolicy.CLASS 기본 메모 보존 정책입니다.이런 전략 아래 주해가 존재할 것이다.class 파일입니다. 실행할 때 접근할 수 없습니다.일반적으로 이런 주석 정책은 일부 바이트 코드의 작업에 사용된다.
RetentionPolicy.RUNTIME 은 런타임 시 액세스할 수 있는 정책입니다.통상적으로 우리는 반사와 결합하여 일을 한다.
@Retention 의 사용 예
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
String value() default "";
}
@Target@Target 주석을 사용하면 사용자 정의 주석이 어떤 자바 요소를 수식할 수 있는지 설정할 수 있습니다.간단한 예
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
public @interface MyAnnotation {
String value();
}
위의 코드는 MyAnnotation 메모가 메서드만 수정할 수 있음을 나타냅니다.@Target에서 선택할 수 있는 매개변수 값은 다음과 같습니다.
클래스와 하위 클래스에 주석을 포함하려면 @Inherited를 사용하여 주석을 수식할 수 있습니다.
java.lang.annotation.Inherited
@Inherited
public @interface MyAnnotation {
}
1
2
@MyAnnotation
public class MySuperClass { ... }
1
public class MySubClass extends MySuperClass { ... }
상술한 코드의 대체적인 뜻은1. @Inherited 코스메틱 메모를 사용하여 MyAnnotation
2. MyAnnotation 메모를 사용하여 MySuperClass
3. 하나의 클래스 MySubclass를 실현하여 MySuperClass로부터 상속
위의 몇 단계를 통해 MySubClass도 MyAnnotation 메모를 가지고 있습니다.
Java의 주석에 관한 몇 가지 기본적인 개념은 바로 이것이다.
이상은 자바에 대한 주해 자료 정리입니다. 다음에 관련 자료를 계속 보충해 드리겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.