프로그래밍 언어/Java

런타임시에 어노테이션 정보 사용하기 클래스에 적용된 어노테이션 정보 얻기 - 클래스.class 의 어노테이션 정보를 얻는 메소드를 이용한다. 필드, 생성자, 메소드에 적용된 어노테이션 정보 얻기 - 클래스.class의 다음 아래 표에 작성된 메소드를 이용해서 - java.lang.reflect 패키지의 Field, Constructor, Method 클래스의 배열을 얻어낸다. 리턴타입 메서드명 (매개변수) 설명 Field[] getFields() 필드 정보를 Field 배열로 반환 Constructor[] getConstructor() 생성자 정보를 Constructor 배열로 반환 Method[] getDeclaredMethods() 메소드 정보를 Method 배열로 반환 - Field, Constru..
프로그램을 작성하다보면 종종 @이라는 문자를 본다. 어노테이션이라고 부르는건 알겠는데 정확한 사용 방법과 어떻게 수정하는지 등에 대해서 명확하게 알지 못했다. 어노테이션의 용도 1. 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다. 우리가 코드를 작성하고 나서 이 코드가 제대로 잘 작성이 되었는지, 잘못 작성이 되었는지 컴파일러에게 검사할 수 있도록 정보를 제공해주는 역할이다. 대표적인 예로 @Override 이다. 이 어노테이션은 컴파일러에게 내가 지금 작성하고 있는 코드가 부모 클래스에 있는 메서드인지 검사해보라는 의미이다. 2. 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다. 나중에 자바 프로그램을 개발하고난 이후 jar나 war형식으로 압축을 ..
1편에서 람다식에서 생략 가능한 부분이 있고, 함수형 인터페이스를 사용하기 때문에 발생하는 람다식 안에서 사용하는 변수의 제한적인 부분이 있다고 했었다. 우선 람다식에서 생략 가능한 문법에 대해서 정리 해보자. 추상메서드의 매개변수에 따라 생략 가능한 부분이 조금 다르기 때문에, parameter가 있는 경우와 없는 경우로 나누어 살펴보자. 1. parameter : 없음 public class FunctionalInterfaceExample { public static void main(String[] ar) { // 매개변수가 없는 경우 ()는 무조건 작성해 줘야 한다. FInterface fi_1 = () -> { }; // 구현부가 여러 라인인 경우 { } 안에 작성해야 한다. FInterface..
Java 8 에서 새롭게 선보인 람다식. 이 람다식에 대해 알아보기 전에 꼭 알아야 할 개념이 있다. futional interface라는 것이다. 이 함수형 인터페이스란 이름에 겁먹지 말자. 함수형 인터페이스란 추상메소드를 단 하나만 가지는 인터페이스를 지칭하는 말이다. 당장 생각나는 인터페이스중에는 Runnable 인터페이스가 있지만, 임의로 함수형 인터페이스를 하나 생성해서 예시로 들어보겠다. interface FInterface { public void aaa(); } 위에서 처럼 FInterface라는 이름의 인터페이스를 하나 생성했다. 그리고 이 인터페이스는 aaa라는 이름의 매개변수가 없고 리턴타입이 void인 추상메소드를 하나 가지고 있다. 이게 함수형 인터페이스이다. 추가로 인터페이스가 ..
다른 언어에도 있지만, 이 '접근 제한자'라는 개념이 있다. 단어에서도 느껴지듯 내가 아닌 다른 곳(혹은 것)에서의 접근을 제한하겠다는 의미이다. 모두에게 공개하지 않겠다는 말. 보통 네가지 종류의 접근 제한자가 있다. 1. public 접근을 제한하지 않는다. 모두의 접근을 허용한다. 그래서 보통 클래스의 멤버 메소드는 이 public을 사용해서 작성한다. 왜? 생각해보면 단순하다. 내가 만든 이 기능 모두가 널리널리 사용했으면 좋겠으니까? 2. protected 동일한 패키지 내에 존재하거나, 다른 패키지에 존재한다면 상속을 받은 경우에만 접근이 가능하다. 3. package 아무런 접근제한자를 명시하지 않으면 이 package라고 생각하면 된다. default값으로 동일한 패키지 내에서만 자유롭게 ..
java에서 import 예약어를 사용하는 경우가 있다. 어떤 경우냐면 java에서 선언하지 않아도 기본적으로 import해주는 java.lang 패키지가 아닌 다른 클래스 파일이나 라이브러리를 해당 소스에서 사용하고자 할 경우, 외부 클래스 파일이나 라이브러리를 추가하기 위한 경우이다. 예를 들면 사용자로부터 숫자를 입력 받기위해 java의 util패키지에 선언된 Scanner클래스를 사용할 때 아래와 같이 해당 클래스르 import해 주어야 사용 가능하다. [소스 1] import java.util.Scanner; public class Example { public static void main(String[] ar) { Scanner sc = new Scanner(System.in); System..
자바 애플리케이션이 동작하는 관점에서의 원자단위라고 생각되는 클래스라는 것의 개념에 대해 정리해보려 한다. 지난번 제네릭에 대해 알아볼 때 살짝 언급되었던 적이 있었다. (java 제네릭 (Generic), 내가 알아보기 쉽게 정리 - 1편, 왜 제네릭) 사실 클래스라는 것에 도달하기 위해서 거쳐가야할 개념들이 좀 있다. 쭉 나열해보자면 대강 '상수' -> '변수' -> '배열' -> '구조체' -> '클래스' 이렇다고 할 수 있다. 우선 자바에서 상수는 아래처럼 사용할 수 있다. public class Example { public static final int NUMBER = 10; public static void main(String[] ar) { System.out.println(NUMBER);..
이전에 왜 제네릭이 나왔는지 알았다면, (java 제네릭 (Generic), 내가 알아보기 쉽게 정리 - 1편, 왜 제네릭) 이번에는 기본적인 제네릭 사용 방법에 대해 정리를 해보려 한다. 우선 이 다이아몬드 괄호라고 불리는걸 보면 일단 '제네릭이다' 라고 생각하면 된다. 제네릭은 크게 ​클래스​에 적용할 수 있고 또 ​메서드​에도 적용해서 사용할 수 있다. 1. 클래스에 사용할 때는 아래와 같은 형태를 갖는다. package com.xxxelppa.generic; public class GenericTest { public static void main(String[] ar) { Generic_sub gs = new Generic_sub(); } } class Generic_sub { private T..
nimkoes
'프로그래밍 언어/Java' 카테고리의 글 목록 (2 Page)