개발

Class 클래스 본문

Java

Class 클래스

Dev.hs 2021. 3. 6. 20:03
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

class Computer{
    String cpu;
    String ram;

    public Computer() {}

    public Computer(String cpu, String ram){
        this.cpu = cpu;
        this.ram = ram;
    }

    public String getCpu() { return cpu; }
    public String getRam() { return ram; }
    public void setCpu(String cpu) { this.cpu = cpu; }
    public void setRam(String ram) { this.ram = ram; }
}


public class Test {
    public static void main(String[] args) throws Exception {

        Computer com = new Computer();

        //메타데이터를 얻어올 수 있는 Class 객체
        Class computerClass = com.getClass();
        System.out.println(computerClass.getName());      //Class의 이름 A.Computer(패키지명 포함)
        System.out.println(computerClass.getSimpleName());//Class의 이름 Computer

        //클래스객체 문자로 얻기
        Class computerClass2 = Class.forName("A.Computer");
        System.out.println(computerClass2.getName());      //Class의 이름 A.Computer(패키지명 포함)
        System.out.println(computerClass2.getSimpleName());//Class의 이름 Computer

        //생성자 얻기 ()
        Constructor[] con = computerClass.getDeclaredConstructors();
        for (Constructor constructor : con){
            System.out.println(constructor.getName());

            //파라미터 정보 가져오기
            Class[] params = constructor.getParameterTypes();
            for (int i = 0; i < params.length ; i++) {
                System.out.println("파라미터 클래스 : "+params[i].getSimpleName());
            }
        }

        //필드 얻기 ()
        Field[] fields = computerClass.getDeclaredFields();
        for(Field field : fields) {
            System.out.println("필드타입 : "+field.getType().getSimpleName());
            System.out.println("필드명 : "+field.getName());
        }

        //메소드정보 얻기 ()
        Method[] methods = computerClass.getDeclaredMethods();
        for(Method method : methods){
            System.out.println("메소드 명 : " + method.getName());
            System.out.println("리턴타입 : " + method.getReturnType().getSimpleName());
            Class[] params = method.getParameterTypes();
            for (int i = 0; i < params.length ; i++) {
                System.out.println("파라미터 클래스 : "+params[i].getName());
            }
        }
    }
}

'Java' 카테고리의 다른 글

ORACLE OPEN JPA에서 설정과 다른 schema의 db를 조회  (0) 2022.01.09
Stream  (0) 2021.03.14
제네릭 기초  (0) 2021.03.06
자주쓰는 날짜 관련 api 정리 (yyyyMMddHHmmss)  (0) 2021.02.23
[Java] 제곱근 구하기  (0) 2021.01.23
Comments