Java 如何检查类是否存在

Java 如何检查类是否存在,java,Java,“Class”类是否有任何静态方法可以告诉我们用户输入的类(以字符串形式)是否是有效的现有Java类名?您可以使用以下方法检查类的存在性: try { Class.forName( "myClassName" ); } catch( ClassNotFoundException e ) { } public class Foo { static { System.out.println("foo loaded and initialized");

“Class”类是否有任何静态方法可以告诉我们用户输入的类(以字符串形式)是否是有效的现有Java类名?

您可以使用以下方法检查类的存在性:

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) 请参阅下面的可能的副本,但是请记住,这实际上加载了类,这可能会产生副作用。此外,如果类本身存在,它可能会失败,但由于缺少它所依赖的类而无法加载。