BLOG main image
분류 전체보기 (313)
교육 (13)
NEIS (6)
Edufine (0)
Programmer (5)
Android Programming (1)
Internet W3 (18)
JAVA Programming (9)
JSP/Servlet (1)
Framework (7)
Spring For Beginner (4)
eGovFrame (10)
MEAN Stack (2)
NodeJS (5)
SublimeText (30)
SublimeText_Tips (18)
Eclipse (16)
JavaScript (8)
jQuery (12)
jQuery_tips (1)
Ajax (3)
DWR(Direct Web Remote) (4)
JSON(JS Object Notation) (4)
Oracle (2)
MySQL (28)
OS (16)
Download (3)
Life (10)
Favorit Site (1)
Books (2)
Healthy (1)
Stocks (1)
HTML5/CSS (1)
Python (4)
Security (7)
CISSP (0)
Ruby On Rails (5)
일기장 (0)
영어 교과서(중2) (3)
알고리즘 (0)
Go Lang (3)
VB 2010 (12)
C# (1)
정보보안기사(네트워크보안) (0)
업무 활용 엑셀 (11)
틈틈이 활용팁 (14)
하루 하루 살아가며 ……. (2)
기술 (1)
파이썬 & 데이터분석 (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2015. 4. 27. 09:27

protected 접근 제한자

- 상속과 관련된 접근 제한자

  1. 같은 패키지 : default 와 동일

  2. 다른 패키지 : 자식 클래스만 접근 허용(다른 패키지 내의 클래스더라도 상속받은 클래스는 가능)

 

접근제한자

접근제한 

적용 대상 

 접근할 수 없는 클래스

 public

 클래스, 필드, 생성자, 메소드

 없음

 protected

 필드, 생성자, 메소드

 자식 클래스가 아닌 다른 패키지에 소속된 클래스

 default

 클래스, 필드, 생성자, 메소드

 다른 패키지에 소속된 클래스

 private

 필드, 생성자, 메소드

모든 외부 클래스 

 

 

 

반응형

'JAVA Programming' 카테고리의 다른 글

추상 클래스  (0) 2015.04.28
자동 타입 변환  (0) 2015.04.27
어노테이션(Annotation) #2  (0) 2015.04.23
어노테이션(Annotation) #1  (0) 2015.04.23
Getter와 Setter  (0) 2015.04.23
2015. 4. 23. 18:01

어노테이션(Annotation) #2

 

런타임시에 어노테이션 정보 사용하기

 

ㅁ 클래스에 적용된 어노테이션 정보 얻기

- 클래스.class의 어노테이션 정보를 얻는 메소드를 이용

 

ㅁ 필드, 생성자, 메소드에 적용된 어노테이션 정보 얻기

- 클래스.class의 당므 메소드를 이용해서

- java.lang.reflect 패키지의 Field, Constructor, Method 클래스의 배열을 얻어냄

 

 리턴타입

메소드명(매개변수) 

설명 

 Field[]

getFields() 

필드 정보를 Field 배열로 리턴 

 Constructor[]

getConstructors() 

생성자 정보를 Constructor 배열로 리턴 

 Method[]

getDeclaredMethods()

메소드 정보를 Method 배열로 리턴 

 

- Field, Constructor, Method 의 어노테이션 정보를 얻는 메소드를 이용

ex)  소스

 class XXX {

  // 필드에 설정된 어노테이션

  @Annotation  -> 얻어온다.

  int field1;

  @Annotation  -> 얻어온다.

  String fields

 

  // 생성자에 설정된 어노테이션

  @Annotation  -> 얻어온다.

  XXX() {}

  @Annotation  -> 얻어온다.

  XXX(int x) {}

 

  // 생성자에 설정된 어노테이션

  @Annotation  -> 얻어온다.

  void method1() {}

  @Annotation  -> 얻어온다.

  void method2() {}

}

 

ㅁ 어노테이션 정보를 얻기 위한 메소드

 

  리턴타입

메소드명(매개변수) 

 boolean

isAnnotationPresent(Class<? extends Annotation > annotationClass) 

 

지정한 어노테이션이 적용되었는지 여부

Class 에서 호출했을 경우 상위 클래스에 적용된 경우에도 true를 리턴한다.

Annotation

getAnnotation(Class <T> annotationClass)

 

지정한 어노테이션이 적용되어 있으면 어노테이션을 리턴하고

그렇지 않으면 null 을 리턴한다.

Class 에서 호출했을 경우 상위 클래스에도 적용된 경우 Annotation을 리턴한다.

Annotation[]

getAnnotations()

 

적용된 모든 어노테이션을 리턴한다.

Class 에서 호출했을 경우 상위 클래스에 적용된 어노테이션도 모두 포함한다.

적용된 어노테이션이 없을 경우 길이가 0인 배열을 리턴한다.

Annotation[]

getDeclaredAnnotations()

 

(필드, 생성자, 메소드) 직접 적용된 모든 어노테이션을 리턴한다.

Class 에서 호출했을 경우 상위 클래스에 적용된 어노테이션은 포함되지 않는다.

 

소스 작성

New > Annotation 클릭

 

 

 

 

 

 

반응형

'JAVA Programming' 카테고리의 다른 글

자동 타입 변환  (0) 2015.04.27
protected 접근 제한자  (0) 2015.04.27
어노테이션(Annotation) #1  (0) 2015.04.23
Getter와 Setter  (0) 2015.04.23
패키지와 접근 제한자  (0) 2015.04.23
2015. 4. 23. 16:02

어노테이션(Annotation) - java 1.5 이후

 

정의 : 프로그램에게 추가적인 정보를 제공해주는 메타데이터(metadata) 이다.

 

용도

- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공

  ex) @Override : 메소드가 재정의 되었는지 확인할 수 있다.

- SW 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공

  ex) XML 설정 파일을 자동 생성하거나 배포를 위한 JAR 압축 파일을 자동 생성할 수 있다.

- 실행시(Runtime) 특정 기능을 실행하도록 정보를 제공

  ex) 객체가 애플리케이션 내부에서 해야할 역할을 정의할 수 있다. Servlet, Controller ...

 

어노테이션 타입 정의

- 소스파일 생성 : AnnotationName.java

- 소스 파일 내용

public @interface AnnotationName { }

 

어노테이션 타입 적용

@AnnotationName

 

어노테이션 엘리먼트(element) 멤버

- 어노테이션을 코드에 적용할 때 외부의 값을 입력받을 수 있도록 하는 역할

- 엘리먼트 선언

public @interface AnnotationName {

   타입 elementName() [ default 값 ];

   ......

}

 

※ 엘리먼트의 타입은 기본타입과 참조타입을 모두 사용할 수 있다.

public @interface AnnotationName {

  String elementName1();

  int elementName2() default 5;

}

 

- 어노테이션 적용시 엘리먼트 값을 지정하는 방법

@AnnotationName(elementName1 = "값", elementName2 = 3); 또는

@AnnotationName(elementName1 = "값");

 

기본 엘리먼트 value

public @interface AnnotationName {

  String value();  // 기본 엘리먼트 선언

  int elementName() default 5;

}

 

* 어노테이션을 적용할 때 엘리먼트명을 생략가능

@AnnotationName("값")

@WebServlet("/main")

public class MainServlet { ... }

 

* 두개 이상의 속성을 기술할 때에는 value=값 형태로 기술

@AnnotationName(value="값", elementName=3);

@WebServlet(value="/main")

public class MainServlet { ... }

 

어노테이션 적용 대상

- 코드 상에서 어노테이션을 적용할 수 있는 대상

- java.lang.annotation.ElementType 열거 상수로 정의되어 있음

ElementType 열거 상수

적용 대상 

 TYPE

클래스, 인터페이스, 열거 타입 

 ANNOTATION_TYPE

 어노테이션

 FIELD

 필드

 CONSTRUCTOR

 생성자

 METHOD

 메소드

 LOCAL_VARIABLE

 로컬 변수

 PACKAGE

 패키지

 

- 어노테이션 적용 대상 지정 방법

* @Target 어노테이션으로 적용 대상 지정

* @Target 의 기본 일리먼트인 value의 타입은 ElementType 배열

@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})

public @interface AnnotationName {

}

 

소스 예제

@AnnotationName

public class ClassName {

  @AnnotationName

  private String fieldName;

 

  //@AnnotationName (X)

  public ClassName() {}

 

  @AnnotationName

  public void methodName() {}

}

 

어노테이션 유지 정책

- 어노테이션 적용 코드가 유지되는 시점을 지정하는 것

- java.lang.annotation.RetentionPolicy 열거 상수로 정의되어 있음

 

 RetentioinPolicy 열거 상수

 설명

 SOURCE

소스(.java)상에서만 어노테이션 정보를 유지한다.

소스 코드(.java)를 분석할 때만 의미가 있으며,

바이트 코드 파일(.class)에는 정보가 남지 않는다.

 CLASS

바이트 코드 파일(.class)까지 어노테이션 정보를 유지한다.

하지만, *리플렉션을 이용해서 이노테이션 정보를 얻을 수 없다.

 RUNTIME

바이트 코드 파일까지 어노테이션 정보를 유지하면서

리플렉션을 이용해서 런타임에 어노테이션 정보를 얻을 수 있다.

 

* 리플렉션 : 런타임에 클래스의 메타 정보를 얻는 기능

  - 클래스가 가지고 있는 필드, 생성자, 메소드, 어노테이션의 정보를 얻을 수 있다.

  - 런타임시에 어노테이션 정보를 얻으려면 유지 정책을 RUNTIME 으로 설정해야 함.

 

- 유지 정책 지정 방법

   @Retention 어노테이션으로 유지 정책을 지정

   @Retention의 기본 엘리먼트인 value의 타입은 RetentionPolicy

 

@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

public @interface AnnotationName {    }

 

 

 

 

 

 

 

 

 

반응형

'JAVA Programming' 카테고리의 다른 글

protected 접근 제한자  (0) 2015.04.27
어노테이션(Annotation) #2  (0) 2015.04.23
Getter와 Setter  (0) 2015.04.23
패키지와 접근 제한자  (0) 2015.04.23
non-static 멤버와 static 멤버의 특징  (0) 2015.04.23
2015. 4. 23. 14:19

Getter와 Setter

 

1. 클래스를 선언할 때 필드는 일반적으로 private 접근 제한을 한다.

  - 읽기 전용 필드가 있을 수 있다. - Getter의 필요성

  - 외부에서 엉뚱한 값으로 변경할 수 없도록 한다 - Setter의 필요성

 

2. Getter

  - private 필드의 값을 리턴하는 역할을 한다.

  - getFieldName() 또는 isFieldName() 메소드를 말한다.

 

3. Setter

  - 외부에서 주어진 값을 private 필드 값으로 수정한다.

  - setFieldName(타입 변수) 메소드를 말한다.

 

※ 필드를 읽기전용으로 설정하려면 필드에 대한 Getter 만 생성하고 Setter 는 생성하지 않는다.

 

Getter와 Setter 자동 생성 방법

 

1. 필드 생성

2. Source > Generate Getters and Setters : 단축키 Alt + Shift + S

 

 

 

반응형

'JAVA Programming' 카테고리의 다른 글

protected 접근 제한자  (0) 2015.04.27
어노테이션(Annotation) #2  (0) 2015.04.23
어노테이션(Annotation) #1  (0) 2015.04.23
패키지와 접근 제한자  (0) 2015.04.23
non-static 멤버와 static 멤버의 특징  (0) 2015.04.23
2015. 4. 23. 13:11

윈XP와 윈 7의 NPKI 경로가 다릅니다.

 

윈7

 

C:\Users\User\AppData\LocalLow\NPKI

반응형

'Life' 카테고리의 다른 글

현타(현실 자각 타임)  (2) 2015.07.20
인터넷 신조어  (0) 2015.07.20
Demi_Lovato-Skyscraper  (0) 2015.06.26
Summer Wine - Nancy Sinatra & Lee Hazlewood  (0) 2015.06.26
OK 캐쉬백 우편으로 보낼때  (0) 2015.04.23