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()
至此以上两个问题都解决