래퍼, Class 클래스란

골드곽
|2024. 5. 30. 23:47
반응형

JAVA TYPE

기본형과 참조형이 있다.

 

기본형의 한계

  1. 객체 내부에는 유용한 메서드를 포함하는데 사용 불가능
  2. 값이 없는 경우를 표현해야 할 때 불가능 (기본형은 무조건 값을 갖고있음)

래퍼 클래스란

java.lang 패키지의 클래스들 중 기본형 변수를 감싸는 클래스

※기본형 int, float, double, boolean 등

래퍼 클래스 사용방법

Integer i = new Integer(10); 	 // 향후 자바에서 제거될 예정
Integer i = Integer.valueOf(10); // Boxing 이렇게 사용

i.intvalue(); //Unboxing

 

래퍼클래스 비교는 equals() 사용

래퍼클래스 객체 그대로 출력시 내부에서 toString()으로 출력

Auto-Boxing, Auto-Unboxing

개발자의 불편함을 해결차 도입

// Primitive -> Wrapper
int value = 7;
Integer boxedValue = value; // 오토 박싱(Auto-boxing)

// Wrapper -> Primitive
int unboxedValue = boxedValue; // 오토 언박싱(Auto-Unboxing)

System.out.println("boxedValue = " + boxedValue);
System.out.println("unboxedValue = " + unboxedValue);

//boxedValue = 7
//unboxedValue = 7

Class 클래스

Class명.class를 하면 해당 클래스 메타정보를 조회할 수 있다.

※이런걸 리플랙션이라고 한다.

 

주요기능

  • 타입정보 출력: 클래스의 이름, 슈퍼클래스, 인터페이스, 접근 제한자 조회가능
  • 리플렉션 가능: 필드, 메서드 정보 조회가능
  • 동적로딩 가능: Class.forName() 메서드를 통해 동적 로드 가능하며,
    newInstance() 메서드를 통해 새로운 인스턴스 생성 가능
// Hello.java

public class Hello {
    public String hello(){
        return "hello!";
    }
}

// ClassCreateMain.java

public class ClassCreateMain {
    public static void main(String[] args) throws Exception {
        Class helloClass = Hello.class;
        //Class helloClass = Class.forName("lang.clazz.Hello");

        Hello hello = (Hello)helloClass.getDeclaredConstructor().newInstance();
        String result = hello.hello();

        System.out.println("result = " + result);
    }
}

//result = hello!

 

new Hello(); 로만 인스턴스 생성 할 수 있는줄 알았는데, 아니었다. (신기)

리플렉션(reflection)이라는건데 특정한 상황에서는 유용할 수 있는데, 성능이나 유지보수 측면에서는 별로라고 한다.

 

 

반응형

'공부 > Java' 카테고리의 다른 글

메모리 가시성  (0) 2024.09.20
스레드 기본 정보  (1) 2024.09.18
스레드 생성과 실행  (0) 2024.09.16
프로세스와 스레드란  (0) 2024.09.16
String이란  (0) 2024.05.29