Java의 세 가지 간단한 메모 소개 및 코드 인스턴스
JDK5가 제공하는 간단한 메모 유형은 3개에 불과합니다.이 세 가지는 모두 오류를 예방하거나 깨우치는 데 쓰인다. 각각 다음과 같다.
1.Override
2.Deprecated
3.Suppresswarnings
주의해야 할 것은 JDK5(또 다른 견해, Tiger)는 실제로 내장된 주석이 많지 않다는 것이다.반대로 핵심 Java는 메모 특성을 지원할 수 있습니다.JSR-175에서는 메타데이터 기능을 정의하는 데 사용됩니다.프로그래머가 사용자 정의 메모 유형을 작성해야 하며, 다른 JSR 표준도 일련의 표준 메모 유형을 작성했다.다음은 실례로 이 세 가지 간단한 주해를 깊이 있게 설명할 것이다.
Override 메모
Override 주석은 주석이 되는 방법을 가리키는데 초류의 방법을 복사해야 한다.
만약 어떤 방법이 이 주석을 사용했지만 초클래스의 방법을 덮어쓰지 않았다면 (예를 들어 대소문자가 틀렸거나 파라미터가 틀렸거나 하위 클래스가 스스로 정의한 방법), 컴파일러는 오류를 생성할 것이다.
(주의: JRE5에서 인터페이스를 실현하는 방법을 사용할 때 Override 주석을 사용할 수 없습니다. JRE6가 허용하고 JRE5가 이 오류를 보고하는 경우가 많습니다.)
예 1은 덮어쓰기 메모를 보여 줍니다.
Java 메모 예 1:
public class Test_Override {
@Override
public String toString() {
return super.toString() + " 'Override' ";
}
}
만약 방법 이름 맞춤법 오류가 발생하면 무슨 일이 발생합니까?예를 들어 toString 방법을'tostring'(전체 소문자)으로 바꾸면 다음과 같은 오류 메시지가 컴파일됩니다.
Compiling 1 source file to D:tempNew Folder (2)
TestJavaApplication1buildclasses
D:tempNew Folder (2)TestJavaApplication1srctest
myannotationTest_Override.java:24: method does not override
a method from its superclass
@Override
1 error
BUILD FAILED (total time: 0 seconds)
물론 Eclipse는 붉은 포크를 직접 표시합니다.현재 IDE는 매우 잘 발전하고 있으니, 초보자는 JDK의 명령행을 괴롭혀서는 안 된다.Deprecated 메모
이 설명은 프로그램이 폐기된 (Deprecated, 폐기된, 유행이 지난 것) 요소를 호출할 때 컴파일러가 경고 메시지를 표시해야 한다는 것을 보여 줍니다.예 2에서는 Deprecated 메모를 사용하는 방법을 보여 줍니다.
Java 메모 예제 2
먼저 클래스를 만들고 다음과 같이 어떤 방법을 폐기라고 표시합니다.
public class Test_Deprecated {
@Deprecated
public void doSomething() {
System.out.println(" : 'Deprecated'");
}
}
그런 다음 다른 클래스에서 이 방법을 사용하십시오.
public class TestAnnotations {
public static void main(String arg[]) throws Exception {
new TestAnnotations();
}
public TestAnnotations() {
Test_Deprecated t2=new Test_Deprecated();
t2.doSomething();
}
이 예에서 doSomething () 방법은 폐기된 방법으로 선언됩니다.따라서 일반적인 상황에서 이 방법을 사용해서는 안 된다.Test_ 컴파일하기Deprecated.자바 파일은 경고 메시지가 없습니다.하지만 TestAnnotations를 컴파일하고 있습니다.java 시 컴파일러는 다음과 같은 경고 메시지를 보냅니다.
Compiling 1 source file to D:tempNew Folder
(2)TestJavaApplication1buildclasses
D:tempNew Folder
(2)TestJavaApplication1srctestmyannotation
TestAnnotations.java:27:
warning: [deprecation] doSomething() in
test.myannotation.Test_Deprecated has been deprecated
t2.doSomething();
1 warning
Suppresswarnings 메모이 주석은 컴파일러가 주석이 있는 원소와 모든 하위 원소의 경고 정보를 차단해야 한다는 것을 알려준다.원소 집합과 하위 원소의 모든 경고 메시지를 압축합니다.예를 들어, 만약에 당신이 한 class에서 Suppresswarnings 주석을 사용하여 경고를 눌렀다면, 그 방법에서 Suppresswarnings 주석으로 다른 경고를 눌렀다면, 두 가지 경고는 모두 방법 단계에서 눌릴 것이다.예제 3 참조.
Java 메모 예 3:
public class TestAnnotations {
public static void main(String arg[]) throws Exception {
new TestAnnotations().doSomeTestNow();
}
@SuppressWarnings({"deprecation"})
public void doSomeTestNow() {
Test_Deprecated t2 = new Test_Deprecated();
t2.doSomething();
}
}
이 예에서 @SuppressWarnings를 사용하여 예시 2에서 보듯이 deprecation 경고 메시지를 눌렀습니다.이 방법의 이런 경고가 눌렸기 때문에, 너는 다시는 "deprecation"경고를 보지 못할 것이다.주의: 가장 안쪽 요소에 이 주석을 사용하는 것이 좋습니다.따라서 특정한 방법으로만 경고를 억압하고 싶다면, 클래스에서 주석을 사용하지 말고 방법에 표시해야 한다.
메타 메모(Meta-Annotations, Java 메모 유형)
메타 메모, 실제로 메모라고 불리는 메모는 네 가지 유형을 포함한다.각각:
1.Target
2.Retention
3.Documented
4.Inherited
Target 메모
Target 메모는 메모 유형이 어떤 대상 요소에 적용되는지 나타냅니다.다음과 같은 열거 유형 값을 포함합니다.
1. @Target(ElementType.TYPE) – 모든 종류의 요소에 적용 가능
2. @Target(ElementType.FIELD) – 필드나 속성에만 적용
3. @Target(ElementType.METHOD) – 메서드에만 적용되는 메모
4.@Target(ElementType.PARAMETER) – 메서드에만 적용되는 매개변수
5.@Target(ElementType.CONSTRUCTOR) – 구조 함수에만 적용
6.@Target(ElementType.LOCAL_VARIABLE) – 로컬 변수에만 적용
7.@Target(ElementType.ANNOTATION_TYPE) – 선언 유형 자체가 메모 유형임을 나타냅니다.
예 4에서는 Target 메모를 보여 줍니다.
Java 메모 예 4
먼저 Test_Target의 메모 유형은 다음과 같이 @Target 메타 메모를 포함합니다.
@Target(ElementType.METHOD)
public @interface Test_Target {
public String doTestTarget();
}
다음은 Test_를 사용하는 클래스를 만듭니다.Target 메모:
public class TestAnnotations {
public static void main(String arg[]) {
new TestAnnotations().doTestTarget();
}
// ,OK.
// , 2 ,Java
@Test_Target(doTestTarget="Hello World !")
public void doTestTarget() {
System.out.printf("Testing Target annotation");
}
}
@Target(ElementType.METHOD) 메모는 메모 유형이 메모 방법에만 사용될 수 있음을 나타냅니다.이 코드를 컴파일하면 경고 메시지가 표시되지 않습니다.그러나 이 주석을 문자열 변수에 설명하면 어떤 일이 일어날까요?아래와 같이
public class TestAnnotations {
// , , Level .
// ,
@Test_Target(doTestTarget="Hello World !")
private String str;
public static void main(String arg[]) {
new TestAnnotations().doTestTarget();
}
public void doTestTarget() {
System.out.printf("Testing Target annotation");
}
}
유일한 변화는 주해 성명이 방법 단계에서 필드 단계로 바뀌는 것이다. 이것은 정확하지 않다.주석을 정의했기 때문에 @Test_Target은 메소드 레벨에만 적용됩니다. 이 클래스를 컴파일하려고 하면 다음과 같은 오류 정보를 얻을 수 있습니다.
"TestAnnotations.java":
D:R_AND_DTestAnnotationsrctestmyannotation
TestAnnotations.java:16:
annotation type not applicable to this kind of declaration at line
16, column 0
@Test_Target(doTestTarget="Hello World !")
^
Error in javac compilation
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.