2014-03-31 109 views
2

的我很新到Java。說我有一個XML解析器,我會從它創建對象。在C#中我會做這樣的:相當於Java C#的typeof()

parser p = new parser(typeof(myTargetObjectType)); 

在我的解析器類,我需要知道哪個對象我做,這樣我可以拋出異常,如果解析是不可能的。 如何做Java裏一樣嗎?我的意思是我怎麼能接受參數一樣typeof(myObject)


我明白每一種語言都有它自己的做事方式。我問什麼是Java中的方式

+0

查找到'Class'對象。 –

回答

4

Java有Class類作爲切入點,對Java類型的任何反射操作。類Class

實例表示 類和接口上運行的Java應用程序

要得到一個對象,表示爲Class對象的類型,你可以調用所有繼承Object#getClass()方法參考類型。

返回此Object的運行時類。

您無法使用原始類型執行此操作(調用getClass())。但是,原語類型也具有相關聯的Class對象。你可以做

int.class 

例如。

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"); 
    } 
}