Java 如何检查类是否存在
“Class”类是否有任何静态方法可以告诉我们用户输入的类(以字符串形式)是否是有效的现有Java类名?您可以使用以下方法检查类的存在性:Java 如何检查类是否存在,java,Java,“Class”类是否有任何静态方法可以告诉我们用户输入的类(以字符串形式)是否是有效的现有Java类名?您可以使用以下方法检查类的存在性: try { Class.forName( "myClassName" ); } catch( ClassNotFoundException e ) { } public class Foo { static { System.out.println("foo loaded and initialized");
try
{
Class.forName( "myClassName" );
}
catch( ClassNotFoundException e )
{
}
public class Foo {
static {
System.out.println("foo loaded and initialized");
}
}
您可以使用带有一些额外参数的
Class.forName
,以绕过Rahul答案中的限制
Class.forName(String)
确实加载并初始化了类,但是如果第二个参数为false,则Class.forName(String,boolean,ClassLoader)
不会初始化它
如果您有这样一个类:
try
{
Class.forName( "myClassName" );
}
catch( ClassNotFoundException e )
{
}
public class Foo {
static {
System.out.println("foo loaded and initialized");
}
}
你有
Class.forName("com.example.Foo")
控制台中的输出将加载并初始化foo
如果你使用
Class.forName("com.example.Foo",
false,
ClassLoader.getSystemClassLoader());
您将看到静态初始值设定项未被调用。我不明白您为什么被否决,我认为这是一个有效的问题。欢迎来到SO@谢谢,谢谢。:)我能理解否决票。a) 这个问题措辞拙劣。b) 它没有得到很好的研究。c) 请参阅下面的可能的副本,但是请记住,这实际上加载了类,这可能会产生副作用。此外,如果类本身存在,它可能会失败,但由于缺少它所依赖的类而无法加载。