[英]java equivalent of c# typeof()
我是Java的新手。 假设我有一个xml解析器,然后从中创建对象。 在C#中,我会喜欢:
parser p = new parser(typeof(myTargetObjectType));
在我的解析器类中,我需要知道我在制造哪个对象,以便在无法解析的情况下抛出异常。 如何在jave中做同样的事情? 我的意思是我该如何接受像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");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.