【사내 공부회】Java 어노테이션의 기초(2017/11/02) ~작성중~
0. 소개
내용
전제 지식
참고도서
「Effective Java 제2판」마루젠 출판
목차
1. 어노테이션의 장점
Java 어노테이션 개요
어노테이션(annotation)이란, 어느 데이터에 대해서 관련하는 정보(메타데이터)를 주석으로서 부여하는 것.
※ 주석 - Wikipedia 인용문
주석 예제 (JUnit4)
CalculationTest.java
public class CalculationTest {
/** テストケース1 */
@Test
public void sampleTest1() {
//...
}
/** テストケース2 */
@Test
public void sampleTest2() {
//...
}
}
@Test
로 나타낸다 @Test
가 부여 된 메서드 만 실행합니다. JUnit에서 주석을 사용할 수 없다면 (JUnit3)
CalculationTest.java
public class CalculationTest extends TestCase{
/** テストケース1 */
public void testSample1() {
//...
}
/** テストケース2 */
public void testSample2() {
//...
}
}
TestCase
의 상속으로 표시 test
로 시작합니다.⇒명명 패턴
※ htp // d. 하테나. 네. jp/s 아직 564/20110501/1304265351 참고
명명 패턴의 단점
오자를 깨닫지 못함
tsetSample2
인 경우(오자), 실행되지 않는 것만. 오류가 발생하지 않음 매개 변수 값을 연결할 수 없음
예를 들어,
IllegalArgumentException
를 슬로우 하는 것을 기대하는 테스트 메소드를 생각한다./** JUnit4の書き方 */
@Test(expected = IllegalArgumentException.class)
public void sample() {
//...
}
/** アノテーションが使えない場合の例 */
public void test_IllegalArgumentException_sample() {
//...
}
※『Effective Java 제2판』 항목35 참고
XML과 주석 비교
Servlet은 어노테이션과 XML 모두에서 설정할 수 있다.
@WebServlet("/Hello")
public class HelloServlet extends HttpServlet {
//...
}
web.xml
<!-- アノテーションを使わない場合は、XMLで指定 -->
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>jp.co.sample.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>
XML과 비교한 주석의 특징
⇒ 소스 변경에 강함
※ Annotations vs XML, advantages and disadvantages 참고
표준 라이브러리 주석
@Override
오버라이드 하고 있는 메소드인 것을 나타내는 어노테이션.
Book.javapublic class Book {
public Book(String title, String author) {
this.title = title;
this.author = author;
}
String title;
String author;
@Override //Compile Error. 正しくは equals(Object obj)
public boolean equals(Book obj) {
//nullチェックは省略
return title.equals(obj.title) && author.equals(obj.author);
}
}
컴파일시에, 오버라이드(override) 되어 있지 않은 (오버 로드하고 있다) 것을 깨닫는다.
※『Effective Java 제2판』 항목36 참고
※ 【Effective Java】 항목36:항상 Override 어노테이션을 이용한다 참고
@Deprecated
Java9에서 @Deprecated(since="9", forRemoval=true)
라는 글을 작성할 수 있습니다.
public class Book {
public Book(String title, String author) {
this.title = title;
this.author = author;
}
String title;
String author;
@Override //Compile Error. 正しくは equals(Object obj)
public boolean equals(Book obj) {
//nullチェックは省略
return title.equals(obj.title) && author.equals(obj.author);
}
}
※ What’s New for Core Libraries in JDK 참고
@SuppressWarnings
IDE가 경고 메시지를 억제합니다.
@SuppressWarnings( "unchecked" ) //型のチェックに関する警告を除外
@SuppressWarnings( "javadoc" ) //JavaDoc警告の除外
public class Book {
//..
}
※ ぉ tp : // / pm - 네와 rk. 이 m/? ㈜ゔぁー%え3%82%あ2%え3%83%8え%え3%83%86%え3%83%BC%え3%82%B7%え3%83% 오7%에3%83%B3 참조
value 속성
부록
표준 주석
참고 사이트
h tp // w w. 오 c. 이 m / ぇ b ふぉ l에서 r / ch ch와 rk / jp / 그럼 마가 지네 / 그럼 ぁ 14- 아르 치 ct-Ty ぺ あんどん s. pdf
h tp // w w. 오 c. 이 m / ぇb ふぉl에서 r / ch 네와 rk / jp / 그럼 마가 지네 / 그럼 16- 안녕하세요. pdf
Reference
이 문제에 관하여(【사내 공부회】Java 어노테이션의 기초(2017/11/02) ~작성중~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuji38kwmt/items/76df667ea19d1c57b748
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【사내 공부회】Java 어노테이션의 기초(2017/11/02) ~작성중~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuji38kwmt/items/76df667ea19d1c57b748텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)