다연이네

[days18] 클래스 객체를 얻는 방법 본문

Java

[days18] 클래스 객체를 얻는 방법

 다연  2020. 10. 18. 15:14
반응형

클래스 객체를 얻는 이유: 클래스 정보 파악 --> 사용(newInstance()) 새로운 객체

1) getClass()

2) Card.class() 필드

3) forName()

 

package review;

public class Review07 {
	public static void main(String[] args) {
		//1
		Card c = new Card("HEART",3);
		Class cls1 = c.getClass(); //클래스 정보 얻어오는 함수
		System.out.println(cls1.getName()); //review.Card 패키지명.함수명
		System.out.println(cls1.toString()); //class review.Card class 패키지명.함수명
		System.out.println(cls1); //cls1.toString()와 동일한 결과
		//객체명.toString() == 객체명 
		
		
		//2 객체 생성을 new 클래스명()이 아닌 Class객체를 사용해 newInstance()메소드를 통해서도 가능
		Class cls2 = Card.class; //클래스명.class
		try {
			Card d = (Card) cls2.newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		System.out.println(cls2.getName()); //review.Card
		System.out.println(cls2); //class review.Card
		
        
		//3 Class 클래스의 forName("패키지명.클래스명")메소드
		try {
			Class cls3 = Class.forName("review.Card");
			System.out.println(cls3.getName()); //review.Card
			System.out.println(cls3); //class review.Card
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
	}
}

final class Card {
	String kind;
	int num;
	
	Card(){
		this("SPADE", 1);
	}
	
	public Card(String kind, int num) {
		this.kind = kind;
		this.num =num;
	}
	
	public String toString() {
		return kind+" : "+num;
	}
	 
}

 

 

반응형
Comments