[Java] Class TYPE 알아내기

Goal

- 클래스 (다중)상속 또는 Interface 를 사용하여서 클래스의 다형성을 이루고자 할때, 

  현재의 클래스 이름을 알아야 할 때가 있다. 필요가 없다면 상관없지만...


  현재 Design Pattern - State Pattern or strategy Pattern 을 사용하고 있다. 

  이때, Interface 형태로 클래스를 받고나서 어떠한 클래스인지 몰라 타입의 변경이 불가능 하게 된다. 

 

 필요하다면, 변경하는 방법을 알아보도록 하자.



classA.java

package vbflash.net;

public class ClassA {	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
}

classB.java

package vbflash.net;

public class ClassB {	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
}

MainClass.java


package vbflash.net;

import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class MainClass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		ClassA classA = new ClassA();
		ClassB classB = new ClassB();
		
		String a = classA.getClass().toString();
		String b = classB.getClass().toString();
		
		String array[] = URLParsing(a,".");
		
		System.out.println( "Class TYpe =>" + classA.getClass().toString() );
		System.out.println( "Class TYpe =>" + classB.getClass().toString() );
	}
	
	static public String[] URLParsing(String url, String token) {

		StringTokenizer st1 = new StringTokenizer(url, token);

		List StringAry = new ArrayList();
		while (st1.hasMoreTokens()) {
			String str = st1.nextToken();
			StringAry.add(str);
		}
		return StringAry.toArray(new String[StringAry.size()]);
	}
}

이상 끝. 

'Language > Java' 카테고리의 다른 글

[java] java 실행파일 배포하기  (0) 2013.04.12
[java] java classpath 설정  (0) 2012.12.28
[Java] List 중복 제거  (0) 2012.12.26
Java 소요시간 측정하기  (0) 2012.05.28
[Java] Java 파일 입출력  (0) 2012.04.15

댓글

Designed by JB FACTORY