是否有'Class'类的静态方法可以告诉我们用户输入类(以String的形式)是否是有效的现有Java类名?
答案 0 :(得分:9)
您可以使用Class.forName
一些额外的参数来解决Rahul的答案中的限制。
Class.forName(String)
确实加载并初始化了类,但如果第二个参数为false,则Class.forName(String, boolean, ClassLoader)
不会初始化它。
如果您有这样的课程:
public class Foo {
static {
System.out.println("foo loaded and initialized");
}
}
你有
Class.forName("com.example.Foo")
控制台中的输出为foo loaded and initialized
。
如果您使用
Class.forName("com.example.Foo",
false,
ClassLoader.getSystemClassLoader());
您将看到未调用静态初始值设定项。
答案 1 :(得分:5)
您可以使用Class.forName检查是否存在类,如下所示:
try
{
Class.forName( "myClassName" );
}
catch( ClassNotFoundException e )
{
}