在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