반응형

[Oracle Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]

[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]

Annotation

메타데이터의 형식인 어노테이션(주석)은 프로그램 자체의 부분이 아닌 프로그램에 대한 데이터를 제공한다. 어노테이션은 어노테이션이 달려있는 코드의 작동에 직접적인 영향이 없다.

주석 기초 (Annotations Basics)

주석의 형태 (The Format of an Annotation)

최고로 간단한 형태 내에 어노테이션은 아래와 같이 보인다.

@Entity

@ 사인 글자는 다음으로 어노테이션임을 컴파일러에게 알린다. 아래 예제에서 어노테이션 이름은 override 이다.

@Override

 void mySuperMethod() {…}

어노테이션은 아래와 같은 요소들의 값에 이름이 있거나 없거나 할 수 있는 요소를 포함할 수 있다.

@Author(

    Name = “Benjamin”,

    Date = “3/27/2009”

)

 class MyClass() {…}

또는

@SuppressWarnings(value = “unchecked”)

  void myMethjod() {…}

만약 vaule로 이름 지어진 하나의 원소만 있다면 그 이름은 생략될 수 있다.

@SuppressWarnings(“unchecked”)

  void myMethod(){…}

만약 어노테이션이 원소가 없다면 괄호도 생략될 수 있다.

@Override example.

같은 선언에서 멀티 어노테이션을 사용 가능하다.

@Author(name = “Jane one”)

@EBook

  class MyClass{…}

만약 어노테이션이 같은 타입을 가지고 있다면 반복 어노테이션이라고 불린다.

@Author(name = “Jane”)

@Author(name = “John”)

  class MyClass{…}

반복 어노테이션은 Java 8 버전에서 지원된다.

 

 

어노테이션 타입은 Java SE APIjava.lang 또는 java.lang.annotation 패키지에 정의된 타입 중 하나일 수 있다.

이 전 예제에서 Override 와 SuppressWarniongs는 미리 정의 된 Java 어노테이션이다. 물론 자제로 만든 어노테이션 타입 정의도 가능하다.

어디서 어노테이션을 사용하는가? (Where Annotations Can Be Used)

어노테이션은 선언에 적용될 수 있다. 클래스, 필드, 메서드 그리고 다른 프로그램 원소들의 선언.

선언에서 사용할 때 각 어노테이션은 관례에 따라 그 자신의 라인에 종종 나타난다.

자바 8에서 어노테이션은 타입의 사용에 적용될 수 있다.

클래스 인스턴스 생생 표현식 : new @Interned MyObject();

타입 캐스트 : myString = (@NonNull String) str;

절 구현 : class UnmodifiableList implements

@Readonly List<@Readnoly T> {…}

예외 처리 선언 : void monitorTemperature() throws @Critical TemperatureException {…}

반응형
반응형

[Oracle Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]

[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]

Enum 타입 (Enum Types)

Enum 타입은 미리 정의한 상수들의 세트가 되는 변수로 특별한 데이터 타입이다..그 변수는 미리 정의된 그 값들 중 하나와 같아야 한다. 방위(동서남북)를 나타내거나 요일을 나타내는 공통 샘플도 있다.

상수인 이유로 enum타입 필드의 이름들은 대문자이다.

자바 언어에서는 enum키워드를 사용해서 enum타입을 정의한다. 예를 들어 요일 enum타입을 정의할 수 있다.

     public enum Day {

        SUNDAY, MONDAY, TUESDAY, WEDNESDAY,. THURSDAY, FRIDAY, SATURDAY

     }

고정된 상수의 세트를 대표하기 위해 필요한 때에 enum타입을 사용하는게 좋다. 우리가 아는 모든 가능한 종류의 세트를 사용할 수 있다. 메뉴, 명령어 등등

 

 

 

아래는 Day enum 타입 예제이다.

   public class EnumTest {

      public enum Day {

         SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY

      }

      Day day;

      public EnumTest(Day day) {

         this.day = day;

      }

      public void tellItLikeItIs() {

          switch(day) {

          case MONDAY:

               System.out.println("Mondays are bad");

          break;

          case FRIDAY:

               System.out.println("Fridays are better");

          break;

          case SATURDAY: case SUNDAY:

              System.out.println("Weekends are best");

          break;

          default:

               System.out.println("Midweek days are so-so");

          }

    }

    public static void main(String[] args) {

        EnumTest firstDay = new EnumTest(Day.MONDAY);

        firstDay.tellItLikeItIs();

        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);

        thirdDay.tellItLikeItIs();

        EnumTest fifthDay = new EnumTest(Day.FRIDAY);

        fifthDay.tellItLikeItIs();

        EnumTest sixthDay = new EnumTest(Day.SATURDAY);

        sixthDay.tellItLikeItIs();

       EnumTest seventhDay = new EnumTest(Day.SUNDAY);  

       seventhDay.tellItLikeItIs();

    }

}

아래는 결과이다.

Mondays are bad

Midweek days are so-so

Fridays are better

Weekends are best

Weekends are best

자바 프로그래밍 언어의 enum 타입(Java Programming) 다른 언어에 대비 훨씬 더 파워풀하다. Enum 선언은 클래스로 정의된다. (enum type으로 불린다.) enum 클래스 몸체는 메서드와 다른 필드를 포함할 수 있다. 컴파일러는 enum을 생성할 때 자동으로 몇 개의 특별한 메서드를 추가한다. 예를 들어 선언한 enum의 값 전체를 포함한 배열을 리턴하는 static 값 메서드가 있다. 이 메서드는 enum타입의 값을 for-each 구문을 이용해 공통으로 사용될 수 있다. 예를 들어 아래 예저는 Planet 클래스 예제로 태양계의 모든 행성을 for 순환문으로 만든 것이다.

For(Planet p : Planet.values()) {

}

반응형