달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2010. 6. 26. 16:26

[java] annotation 사용 Enjoy/JAVA2010. 6. 26. 16:26



JDK 1.5 부터 annotation 을 사용할 수 있도록 되었습니다. annotation 은 영어 사전을 찾아보면

주석 이라도 되어있군요.

 

자바에서 주석은

 

// 의  한줄 주석과, /*    */  의 여러줄 주석 그리고 /**    */ 의 java document 를 만들 수 있는 주석이 있습니다.

 

그러니까 이러한 주석과 번역은 주석 이라고 되더라도 annotation 은 다른것 입니다.^^

위의 것들은 comment 라고 하나요??

 

하여튼 먼저 annotation 의 사용법을 보면

 

@Annotation  이렇게 사용합니다. 앞에 @ 마크가 붙습니다.

 

예전에 document 주석내에서 많이 보던것과 유사하죠.

 

/**

  @author 저자명

*/

 

이런식의 주석이 있었습니다.

 

annotation 은 프로그램 코드의 관점에서 보면 그냥 설명 입니다. 즉 코드에 수행에 영향을 미치치 않습니다.

annotation 은 프로그램의 metadata 를 기술한다고 하는데 이는 프로그램에 대한 부연설명, 덧붙이는말

이 되겠습니다. annotation 은 compiler 나 외부 툴들에게 프로그램에 대한 부가적인 설명을 제공하는데 사용됩니다.

 

사용예를 보겠습니다.

 

프로그램을 작성하고 컴파일하면 deprecated 메소드라는 경고문구가 나오는 경우가 있습니다.

이는 사용하려고 하는 메소드가 앞으로 더 이상 지원되지 않으므로 사용하지 말라는 내용입니다.

물론 이런 경고가 나오는 시점에서는 사용할 수 는 있지만 언제 없어질지 모르는 경우죠.

반드시 대체할 수 있는 메소드나 방법을 찾아보아야 겠습니다.

 

그럼 이제 자신이 만든 메소드가 오래되어서 새로운 버전이 만들어지고 이것을 사용하는 사람들에게

구버전은 사용하지 말도록 deprecate 메세지를 컴파일시 보이고 싶을때 어떡할까요..

 

이때 @Deprecated annotation을 사용하면 됩니다

 

/**

  @deprecated 더이상 지원되지 않는 메소드 입니다.

 */

@Deprecated

public void myOldMethod() {

}

 

이렇게 선언을 하면 컴파일시 위의 메소드를 사용할때 경고를 보여줍니다. 주석안의 @deprecated 와 차이점을

@Deprecated 처럼 대문자로 시작한다는 것입니다.

 

또 다른 하나를 보겠습니다.

 

클래스를 상속 받아서 상위클래스의 메소드중하나를 오버라이드 하는경우 입니다.

 

// 상위 클래스

public class Parent {

  public void parentMethod() {

  }

}

 

// 하위 클래스

public class Child extends Parent {

  public void parentmethod() {

  }

}

 

이처럼 상위의 parentMethod 를 오버라이드할 경우 parentmethod로 소문자로 적어서 오버라이드가 되는게 아니라

새로운 메소드가 되어버리는 실수를 할 수 가 있습니다.

이럴경우 @Override  annotation 을 사용할 수 있습니다.

 

@Override

pubilc void paranemethod() {

}

 

이렇게 정의를 하면 컴파일시 parentmethod 가 상위 메소드를 오버라이드 하는것이라고 컴파일러에게 알리게 됩니다.

하지만 대소문자를 잘못적었기 때문에 오버라이드가 아니므로 컴파일러가 오류를 보여주게 됩니다.

 

이처럼 annotation 은 컴파일러 같은 외부툴들에게 프로그램의 부가적인 정보를 알려주기 위해서 사용됩니다.

또다를 사용처는 EJB3.0 에서는 빈의 특성을 컨테이너에게 알리는데 annotation을 사용합니다.

전에는 빈의 특성을 xml 파일로 작성을 해야만 했습니다.

:
Posted by 라면스프