的我很新到Java。说我有一个XML解析器,我会从它创建对象。在C#中我会做这样的:相当于Java C#的typeof()
parser p = new parser(typeof(myTargetObjectType));
在我的解析器类,我需要知道哪个对象我做,这样我可以抛出异常,如果解析是不可能的。 如何做Java里一样吗?我的意思是我怎么能接受参数一样typeof(myObject)
我明白每一种语言都有它自己的做事方式。我问什么是Java中的方式
的我很新到Java。说我有一个XML解析器,我会从它创建对象。在C#中我会做这样的:相当于Java C#的typeof()
parser p = new parser(typeof(myTargetObjectType));
在我的解析器类,我需要知道哪个对象我做,这样我可以抛出异常,如果解析是不可能的。 如何做Java里一样吗?我的意思是我怎么能接受参数一样typeof(myObject)
我明白每一种语言都有它自己的做事方式。我问什么是Java中的方式
Java有Class
类作为切入点,对Java类型的任何反射操作。类Class
的
实例表示 类和接口上运行的Java应用程序
要得到一个对象,表示为Class
对象的类型,你可以调用所有继承Object#getClass()
方法参考类型。
返回此
Object
的运行时类。
您无法使用原始类型执行此操作(调用getClass()
)。但是,原语类型也具有相关联的Class
对象。你可以做
int.class
例如。
public class Main {
public static void main(String[] args) {
UnsupportedClass myObject = new UnsupportedClass();
Parser parser = new Parser(myObject.getClass());
}
}
class Parser {
public Parser(Class<?> objectType) {
if (UnsupportedClass.class.isAssignableFrom(objectType)) {
throw new UnsupportedOperationException("Objects of type UnsupportedClass are not allowed");
}
}
}
class UnsupportedClass {}
或者因为你有对象的实例,这是比较容易:
Parser parser = new Parser(myObject);
public Parser(Object object) {
if (object instanceof UnsupportedClass) {
throw new UnsupportedOperationException("Objects of type UnsupportedClass are not allowed");
}
}
查找到'Class'对象。 –