2012-09-26 46 views
0

我看的JasperReports的的文件,我不明白下面的方法的返回類型:參數類型Java中

public java.lang.Class<?> getValueClass() 
+0

另請參閱http://en.wikipedia.org/wiki/Generics_in_Java – klonq

回答

1

Class<?>引用Class的任何實例。與Class<? extends Collection>相比,這將把標準縮小到有限的一組類別(那些延伸Collection)。

調用方法如newInstance時,這一點尤爲重要。如果您有Class<?> a並致電a.newInstance(),您將獲得Object。如果您有Class<? extends Collection>並致電b.newInstance(),您將獲得Collection的實例。

+0

謝謝您的解釋。我還有一個後續問題:爲什麼不簡單地使用Class作爲返回類型而不是類 user1700440

+0

我想我已經知道那個答案了。由於我們想要更精確地定義某些Class方法(例如newInstance)的返回類型,因此Class使用通配符類型?進行了參數化。 – user1700440

+0

你是對的:'Class'和'Class '是同義詞,但'類'更準確 - 它告訴讀者你實際上已經考慮過它可能是什麼樣的'Class'。 –

0

它只是返回一個類的實例。 ?參數代表通用通配符對象,即它是任何類型的類。

3

該方法返回一個Class對象。 ?表示它可以是任何類型的類。你可以閱讀更多關於通配符here。這些Class對象通常用於處理reflection