java动态取得实例类型并创建实例

java动态获得实例类型并创建实例

在java编程中经常遇到这样的问题

1、已经一个类的实例,判断这个实例是不是某个类的对象;

2、已知一个类的实例,想创建一个和此实例类型相同的对象,尤其当这个实例类型可能动态的时候。

 

介绍一个关键字和两个函数

instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。

示例见newInstance;

 

getClass() Returns the runtime class of this Object.即返回一个实例运行时类型。

示例代码如下:

		String stringInstance = new String();
		Object objectInstance = stringInstance.getClass().newInstance(); 
		System.out.println(objectInstance.getClass().getName());
		Object objectInstance2 = new Object(); 
		System.out.println(objectInstance2.getClass().getName());

 

输出结果:

java.lang.String

java.lang.Object

参考:http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#getClass()

 

newInstance() Creates a new instance of the class represented by this Class object.穿件一个class的实例

代码如下:

		String stringInstance = new String();
		Object objectInstance = stringInstance.getClass().newInstance();  
		if (objectInstance instanceof Object)
			System.out.println("ob是一个Object实例");
		if (objectInstance instanceof String)
			System.out.println("ob是一个String实例");

 

输出结果:

 

ob是一个Object实例

ob是一个String实例

参考:

http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#newInstance()

 

至此以上两个问题都解决