在Java中,Class.forName是否可以返回null,或者如果無法找到該類,它總會拋出ClassNotFoundException或NoClassDefFoundError?在Java中,Class.forName是否可以返回null?
4
A
回答
9
Java Docs表示如果找不到類,它會拋出ClassNotFoundException,所以我會說它永遠不會返回null。
5
因爲在這個方法的文檔中沒有提到null,並且因爲似乎沒有任何情況會讓方法返回null而不是引發異常,所以我認爲它很安全假定它從不返回空值。
它不會拋出NoClassDefFoundError,但它可能會拋出ClassNotFoundException。
0
使用默認的類加載器,當然你不會收到空值。但是,正如jdigital所說,根據您可能使用的安全模型或其他類型的代理加載器(有意或無意),您可能會受到任意數量的自定義類加載器的約束。
哎呀,甚至能的forName採取一個ClassLoader作爲參數... :)
Piko的
-2
@丹代爾是錯誤的,的Class.forName 可以拋NoClassDefFoundError
,如果類是試圖在其靜態初始化程序中發生ClassNotFoundException錯誤。如果您編譯並在沒有其他文件的目錄運行這個你ClassNotFoundException: Inner
現在,添加以下內容在同一目錄下,編譯一切,java Outer
一次,來看看它運行以下是unte
class Outer {
public static final void main(final String[] args) throws Exception{
Class.forName("Inner");
}
}
好。
class Inner {
static Inner2 _i2 = new Inner2();
}
class Inner2 {}
最後,刪除Inner2.class並重新運行外,你將得到NoClassDefFoundError: Inner2
,caused by ClassNotFoundException: Inner2
相關問題
- 1. document.getElementsByTagName('head')[0]是否可以返回null?
- 2. C#2.0:MethodBase.GetCurrentMethod()是否可以返回null?
- 3. javax.persistence.Query.getResultList()是否可以返回null?
- 4. XmlSerializer.Deserialize是否可以返回null?
- 5. CreateFile是否可以返回NULL?
- 6. 是否可以使Class.forName(「」)變得靈活?
- 7. java StringTokenizer - 可以nextToken返回null嗎?
- 8. 是否可以在serviceContract中返回System.Messaging.Message?
- 9. readline()在Java中返回null
- 10. ServiceLocator.Current.GetInstance可以返回null嗎?
- 11. getBestProvider可以返回null嗎?
- 12. 當getActivity()可以返回null?
- 13. 是否可以在Method中返回多個返回類型?
- 14. DbProviderFactory.CreateCommandBuilder實際上是否可以返回null?
- 15. Java的HashMap中返回null
- 16. Java Collections.binarySearch()返回null
- 17. Java - class.getResource返回null
- 18. numberofRowsinSection是否可以返回NSMutableArray的VALUES?
- 19. Java Servlet API 2.5 Cookie.getDomain()總是返回null
- 20. 新運算符是否返回NULL?
- 21. 如何檢查它是否返回null?
- 22. May UIComponent#getFamily()是否返回null?
- 23. 是否getActionBar()應該返回null?
- 24. Object.GetType()是否曾經返回null?
- 25. 返回null shared_ptr是否正確?
- 26. 如何驗證是否string.split()返回null
- 27. STUFF函數可以返回NULL值嗎?
- 28. 可以findViewById(android.R.id.content)爲Snackbars返回null?
- 29. 什麼時候可以ValidatorUtils.getValueAsString()返回null?
- 30. 是否可以在java 8中做一個懶惰的groupby,返回一個流?
爲什麼不扔一NCDFError? – Phil 2009-01-09 23:17:08
它已經拋出ClassNotFoundException異常,如果兩者都使用它會引起混淆。當VM在正常操作過程中找不到類時,VM引發NoClassDefFoundError。當使用反射的代碼找不到類時,會引發ClassNotFoundException。 – 2009-01-10 00:39:58
這並不完全正確。 Class.forName確實會拋出NCDFE,請參閱下面的回覆。 – 2009-01-10 03:20:16