簡體   English   中英

java等效於c#typeof()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM