的我很新到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'對象。 –