03. Class.forName
JAVA.LANG.CLASS클래스
클래스의 정보를 얻기위한 클래스!! 즉, 클래스의 정보를 얻어오는 클래스이다.
forName() :
물리적인 클래스 파일명을 인자로 넣어주면 이에 해당하는 클래스를 반환해줌
클래스를 조사하기 위한 클래스
변수로 클래스를 만들때 Class.forName 은 유용하게 쓰인다.
예제소스 (물리적인 WhitePerson 클래스를 인스턴스한다.)
- try{
Class c=Class.forName("poly.WhitePerson"); // 로딩단계(클래스조사),메모리에 올라오지는 않음(newInstance()해줘야함)
Person p=(WhitePerson)c.newInstance(); // newInstance() 반환형이 Object형이므로 다운캐스팅한다.
}catch(ClassNotFoundException e1){ //클래스를 찾지못했을 경우에 대한 예외사항 - System.out.println("클래스가 존재하지 않습니다.");
}catch(InstantiationException e2){ //인스턴스(new)실패시에 대한 예외사항 - System.out.println("메모리에 올릴수 없습니다.");
}catch(IllegalAccessException e3){ //파일접근에 대한 예외사항 - System.out.println("클래스파일 접근 오류입니다.");
}
종합예제 소스 (전체화일 poly.zip)
물리적(폴더에)으로 있는 클래스(WhitePerson/BlackPerson/YellowPerson)를 입력받아 해당클래스를
로딩&생성하여 속성(color 변수)에 대한 값을 출력하자!!
[1] 사용자가 입력한 문자열에 해당하는 클래스를 얻어온다.
[2] 얻어온 클래스를 메모리에 올린후
[3] 해당 메서드를 실행!!
- package classtest;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import poly.*;
public class ClassApp extends JFrame implements ActionListener{
private JPanel p;
private JLabel la;
private JTextField txt1,txt2;
private JButton bt;
public ClassApp(){
p=new JPanel();
la=new JLabel("생성할 클래스 입력");
txt1=new JTextField(15);
txt2=new JTextField(15);
bt=new JButton("생성");
p.add(txt1);
p.add(bt);
p.add(txt2);
add(p);
bt.addActionListener(this);
setSize(200,150);
setVisible(true);
}
public void actionPerformed(ActionEvent ae){
String className=txt1.getText();
try{
Class c=Class.forName(className); // 로딩단계(클래스조사), 메모리에 올라오지는 않음
Person p=(Person)c.newInstance();
txt2.setText(p.getColor());
}catch(ClassNotFoundException e1){ //클래스를 찾지못했을 경우에 대한 예외사항
txt2.setText("클래스가 없습니다.");
}catch(InstantiationException e2){ // 인스턴스(new)실패시에 대한 예외사항
txt2.setText("인스턴스를 생성할수 없습니다.");
}catch(IllegalAccessException e3){ //파일접근에 대한 예외사항
txt2.setText("엑세스 할수 없습니다.");
}
}
public static void main(String[] args) {
new ClassApp();
}
}[출처] Class.forName()|작성자 이준우
'Back-End > Java' 카테고리의 다른 글
Apache Common유틸로 숫자난수 생성 (0) | 2012.07.18 |
---|---|
JSON.simple 라이브러리를 이용한 Java에서 JSON 포맷 문자열 파싱 (0) | 2012.05.07 |
JSON.simple (0) | 2012.05.07 |
[Log4j] log4j.properties 설정 (0) | 2012.02.28 |
Checked & UnChecked Exception (0) | 2012.02.24 |