JAVA2_07_애너테이션

charl hi·2021년 9월 28일
0

JAVA2

목록 보기
7/8

링크텍스트

애너테이션 @ (Annotation)

  • 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공
  • JUnit이라는 특정프로그램을 위한 정보제공(설정정보 등)을 위한 것

예)

@Test	//이 메소드가 테스트 대상임을 테스트 프로그램에게 알린다.
public void method() {
	...
}


표준 애너테이션

  • 자바에서 제공하는 애너테이션
  • 그 안에 메타 애너테이션이 있다.

@Override

  • 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다.
  • 오버라이딩할 때 메소드이름을 잘못적는 실수를 하는 경우가 많다.
  • ✨오버라이딩할 때 메소드 선언부 앞에 @Override를 붙이자.
class Parent{
	void parentMethod() {}
}

class Child extends Parent{

	@Override
	void parentMethod() {

	}
//	void parentmethod() {}	//위에 애너테이션이 없으면 오류가 나지 않는다.
	
}


@Deprecated

  • 앞으로 사용하지 않을 것을 권장하는 필드나 메소드에 붙인다.
  • 예) Date클래스의 getDate()

  • 그 대상이 사용된 코드를 컴파일하면 어떤 메세지가 나타난다. 오류는 아님!


@FunctionalInterface

  • 함수형 인터페이스(ch14~)에 붙이면 컴파일러가 올바르게 작성했는지 체크
  • 함수형 인터페이스에는 하나의 추상메소드만 가져야 한다는 제약이 있다.
@FunctionalInterface	//함수형 인터페이스는 하나의 추상메소드만 가능!
interface Testable{
	void test();	//추상메소드
//	void check();	//추상메소드
}	//위에 애너테이션이 없으면 오류가 나지 않는다.


@SuppressWarnings

  • 컴파일러의 경고메세지가 나타나지 않게 억제한다.

  • 경고를 개발자가 확인했다는 의미!

  • 괄호()안에 억제하고자 하는 경고의 종류를 문자열로 지정

  • 둘 이상의 경고를 동시에 억제하려면 다음과 같이 해야 한다.

@SuppressWarnings({"deprecation", "unchecked", "varargs", "rawtypes"})

✨사용방법

1. 경고메세지 확인하기

1) ✨cmd 에서 컴파일

  • 해당 src폴더로 이동
  • 컴파일 : javac Ex12_07.java
    -> 경고메세지 뜸, 그 안에 -Xlint

2) -Xlint를 사용해서 컴파일

  • 컴파일 : javac -Xlint Ex12_07.java
    -> warning: [deprecation] 등 원인이 뜸

3) 이클립스로 돌아와서 애너테이션 넣기

  • @SuppressWarnings("deprecation")

public class Ex12_07 {
	
	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		Child c = new Child();
		c.parentMethod();
	}
}

오류는 아니지만 잠재적 위험이기에 미리 처리해주는 게 좋다!



메타 애너테이션

링크텍스트

  • 애너테이션을 위한 애너테이션
  • 애너테이션을 만들 때 사용

@Target

  • 애너테이션을 정의할 때, 적용대상 지정에 사용
  • 어디에 적용할지!



@Retention

  • 애너테이션이 유지(retention)되는 기간을 지정하는 데 사용

  • 컴파일러에 의해 사용되는 애너테이션의 유지 정책은 SOURCE이다.

  • 실행시에 사용 가능한 애너테이션의 정책은 RUNTIME이다.

흠.................모르겠다



@Documented

  • javadoc으로 작성한 문서에 포함시키려면


@Inherited

  • 애너테이션을 자손클래스에 상속하고자 할 때


@Repeatable

  • 반복해서 붙일 수 있는 애너테이션을 정의할 때
  • 음..



Ref

0개의 댓글