Java Mid 07 - Class class

Class 클래스

자바에서 Class 클래스는 클래스의 정보(메타데이터)를 다루는데 사용된다.

Class 클래스를 통해 개발자는 실행 중인 자바 애플리케이션 내에서 필요한 클래스의 속성과 메소드에 대한 정보를 조회하고 조작한다.

Class 주요 기능(클래스의 메타데이터)

  • 타입 정보: 클래스 이름, 슈퍼클래스, 인터페이스, 접근 제한자
  • 리플랙션: 메소드, 필드, 생성자 조회
  • 동적 로딩과 생성: Class,forName()을 통해 클래스를 동적로딩하며, newInstance() 메서드를 통해 새로운 인스턴스를 생성한다.
  • 애노테이션 처리: 클래스에 적용된 애노테이션을 조회하고 처리한다.
public class ClassMetaMain{
    public static void main(String[] args) throws Exception {
        //클래스 조회
        Class clazz = String.class; //클래스에서 조회
        // Class clazz1 = new String().getClass(); //인스턴스에서 조회
        // Class clazz2 = Class.forName( "Java.lang.String" );//문자열로 조회

        // 모든 필드 출력
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            System.out.println( "field = " + field.getType() + " " + field.getName() );

        }
        //모든 메서드 출력
        //extends가 없으면 자동으로 Object를 상속하게 된다.

        Method[] methods = clazz.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println( "method = " + method );

        }

        //인터페이스 정보 출력

        Class[] interfaces = clazz.getInterfaces();
        for (Class i : interfaces) {
            System.out.println("Interface: " + i.getName());

        }

        //인터페이스 정보 출력

    }
}

클래스라는게 있고, 리플랙션을 이용해 메타정보를 얻을 수 잇다.

package lang.system;

import lang.imutable.address.Solution;

import java.util.Arrays;

public class SystemMain {
    public static void main(String[] args) {

        //현재 시간을 밀리초로 가지고 온다.
        long currentTimeMillis = System.currentTimeMillis();
        System.out.println( "currentTimeMillis = " + currentTimeMillis );

        //현재 시간을 나노초로 가지고 온다.
        long currentNano = System.nanoTime();
        System.out.println( "currentNano = " + currentNano );

        //환경 변수를 읽는다. 자바에 필요한 settings
        System.out.println( "getenv" + System.getenv() );

        //시스템 속성을 읽는다.
        System.out.println( "properties = " + System.getProperties() );
        System.out.println( "Java version = " + System.getProperty( "java.version" ) );

        //배열을 고속으로 복사한다.
        char[] originalArray = {'h', 'e', 'l', 'l', 'o'};
        char[] copiedArray = new char[5];
        System.arraycopy( originalArray, 0, copiedArray, 0, originalArray.length );

        //배열 출력
        System.out.println( "copiedArray" + copiedArray );
        System.out.println( "copiedArray" + Arrays.toString( copiedArray ) );

        //프로그램 종료
        System.exit( 0 );
        System.out.println( "hello" );
    }
}

Reference

인프런 김영한님의 자바 강좌



© 2022. by taewoo

Powered by taewoo