我对java很新。说我是一个xml解析器,我从它创建对象。在c#中我喜欢:
parser p = new parser(typeof(myTargetObjectType));
在我的解析器类中,我需要知道我正在创建哪个对象,这样如果无法进行解析,我就会抛出异常。
如何在jave中做同样的事情?我的意思是我如何接受像typeof(myObject)
我理解每种语言都有自己的做事方式。我在询问java中的方式
答案 0 :(得分:4)
Java将Class
类作为Java类型上任何反射操作的入口点。
类
Class
的实例表示一个类中的类和接口 运行Java应用程序
要获取对象的类型(表示为Class
对象),可以调用所有引用类型继承的Object#getClass()
方法。
返回此
Object
的运行时类。
您无法使用基本类型执行此操作(调用getClass()
)。但是,原始类型也有一个关联的Class
对象。你可以做到
int.class
例如。
答案 1 :(得分:1)
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");
}
}