분류 전체보기 (40) 썸네일형 리스트형 [JAVA]리플렉션(reflection)과 어노테이션 정보의 사용 어노테이션 자체는 아무런 동작을 가지지 않는 단지 명찰과 같은 존재이지만 리플렉션을 이용해서 어노테이션의 적용 여부, 엘리먼트 값을 읽는 것 등이 가능하다. 클래스에 적용된 어노테이션 정보를 얻을 때는 java.lang.Class를 이용하면 된다. 하지만 필드, 생성자, 메소드에 적용된 어노테이션 정보를 얻으려면 java.lang.reflect패키지의 Field, Constructor, Method 타입의 배열을 얻어야 한다. 리턴 타입 메소드명(매개변수) 설명 Field[] getFields() 필드 정보를 Field 배열로 리턴 Constructor[] getConstructors() 생성자 정보를 Constructor 배열로 리턴 Method[] getDeclaredMethods() 메소드 정보를 .. [JAVA]어노테이션(Annotation) 어노테이션은 메타데이터(metadata)라고 할 수 있다. 메타데이터는 애플리케이션이 처리해야 할 데이터가 아닌, 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지 알려주는 데이터이다. 예를 들어 바나나를 판매하는데 특정 바나나에는 @할인가능이라는 명찰(어노테이션)을 붙이고 후에 @할인가능이라고 적혀있는 바나나를 따로 다른 통에 담아두라"는 업무를 수행한다고 하자. 이 때 @할인 가능이라는 어노테이션을 사용해 바나나 분류 업무를 수행했다고 할 수 있다. 어노테이션은 다음과 같이 작성한다. @AnnotationName 어노테이션의 용도 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공한다. 대표적인 예로 @Override 어노테이션이 있다. 이 어노테이션은 메소드 선언 시 사용한다. .. [JAVA]Getter와 Setter 메소드 자바는 객체 지향 프로그래밍 언어다. 객체 지향 프로그래밍에서 객체의 데이터는 무결성을 위해 객체 외부에서 직접적으로 접근하는 것을 막는다. 예를 들어 나이를 입력하는 필드가 있다고 하자. 이때 나이는 음수가 될 수 없으므로 음수 값이 들어가면 안 되지만 외부에서 음수로 변경을 하게 되면 객체의 무결성이 깨지게 된다. Setter 이러한 상황을 해결하기 위해 객체 지향 프로그래밍에서는 메소드를 통해서 데이터를 변경하는 방법을 선호한다. 데이터를 외부에 공개하지 않고 메소드를 공개해서 이 메소드로 데이터에 접근할 수 있도록 유도한다. 메소드를 활용하는 이유는 메소드는 유효 데이터를 검증할 수 있기 때문이다. 예를 들어 나이를 입력하는 메소드에 음수가 입력된다면 다시 입력하게 반환할 수 있다. 이러한 역할을.. [JAVA]접근 제한자(Access Modifier) main()메소드를 가지지 않는 대부분의 클래스는 외부 클래스에서 이용할 목적으로 만들어진 라이브러리 클래스이다. 라이브러리 클래스를 설계할 때는 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해서 이에 맞게 필드, 메소드 등을 구현하는 것이 좋다. 이렇게 하면 객체의 특정 데이터를 보호하거나 필드에 접근하지 못하게 하는 등의 역할을 수행할 수 있다. 자바는 이런 기능을 구현하기 위해 접근 제한자(Access Modifier)라는 것을 제공한다. 접근 제한자의 종류 접근 제한자에는 네 가지 종류가 있다. public 공개되어 있다. 외부 클래스가 자유롭게 드나든다. protected 같은 패키지나 자식 클래스에서만 자유롭다. default public, protected, privat.. [JAVA] 패키지(package), import문 프로젝트를 하면서 자바 프로그램을 개발하다 보면 수십, 수백 개의 클래스를 작성하는 경우가 생긴다. 클래스가 많아질수록 관계가 복잡해져서 관리를 제대로 하지 않으면 관계가 엉켜 복잡하고 난해한 프로그램이 될 가능성이 있다. 자바에서는 이런 부분을 방지하기 위해 클래스를 체계적으로 관리하기 위한 패키지를 사용한다. 자바에서는 패키지를 만들어서 이 패키지에 분류에 맞게 클래스를 저장하고 관리하는데 이 시스템은 컴퓨터의 폴더 시스템과 유사하다. 패키지가 어떻게, 어떤 기능을 하는지 알아보자. 패키지는 파일 시스템의 폴더 기능을 한다. 패키지는 클래스의 일부분이다. 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 한다. 예를 들어 삼성 패키지의 TV 클래스와 LG패키지의 TV 클래스를 비교해보면 두 패키지 .. [JAVA]final 키워드와 상수(static final)의 이해 final 필드 final 필드는 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없게 되는 필드이다. 선언법 final 타입 필드 = 초기값; final int num = 123; final 필드에 초기값을 주는 방법은 두 가지이다. 필드 선언 시에 초기값을 지정한다. 단순히 값을 선언할 때 사용하면 편리하다. 생성자에서 초기값을 준다. 외부에서 데이터를 초기화해야 되는 상황에 사용한다. 복잡한 초기화 코드가 필요한 경우에 사용할 수 있다. 만약 생성자에서도 final 필드가 초기화되지 않는다면 컴파일 에러가 발생한다. 예제 Person.java public class Person { //final 필드 두개와 일반 필드 한개 선언 final int age = 21; //.. [JAVA]싱글톤(Singleton)과 getInstance()메소드 전체 프로그램에서 단 하나의 객체로만 만드는 경우가 있는데 이 때의 객체를 싱글톤이라 한다. 가끔 이와 같이 프로그램에서 단 하나의 객체만 만들도록 보장해야 되는 경우가 생긴다. 생성자를 외부에서 호출 할 수 없게 하려면 접근을 제한하면 된다. 이 때 사용되는 것이 접근 제한자 private이다. 생성자 앞에 private를 붙여주면 된다. 정적 필드도 외부에서 필드값을 변경하면 안되므로 private를 붙여준다. public class Singleton { //정적 필드 private static Singleton singleton = new Signleton(); //생성자 private Singleton() {} //정적 메소드 static Singleton getInstance() { return.. [JAVA]정적 멤버와 static, 정적 블록 정적은 영어로 static이라 하고 '고정된' 이라는 의미를 가지고 있다. 정적 멤버라는 것은 클래스에 고정된 멤버라는 것이다. 정적 멤버는 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 그렇기 때문에 객체 즉, 인스턴스에 소속된 멤버가 아니라 클래스에 소속된 멤버이다. 이로 인해 클래스 멤버라고도 한다. 정적 멤버 선언하기 정적 멤버에는 정적 메소드 정적 필드가 있다. 정적 멤버를 선언 할때 static 키워드를 추가적으로 붙여 정적 멤버를 선언할 수 있다. public class Main{ static int fieldEX = 0;//정적 필드 선언 static void methodEX() { }// 정적 메소드 선언 } 정적 멤버는 Heap영역이 아닌 Static영역에 할당된다. S.. 이전 1 2 3 4 5 다음