在我的程序中,我将 2个字符串传递给某个评估方法。
该方法必须获取这些字符串的Class
类(如果它是真正的类名!)并比较它们的共性。
字符串可以有两种类型的输入:
在我的方法中获取这两个字符串我怎么能理解它是1或2类型所以不能得到Exception
?
答案 0 :(得分:2)
我怀疑是否有一个完美的条件来检查它,因为“Hello”和java.lang.Byte一样有效的类名。您可以做的是根据有效的java标识符http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.8
验证字符串所以两个检查: 1.检查有效的java类名。 2.尝试使用Class.forName()加载类。如果类路径中不存在类,则会引发ClassNotFoundException。
使用了我在其他一些链接中找到的简单正则表达式来验证类名
String regexForBasicClassNameValidation = "([a-zA-Z_$][a-zA-Z\\d_$]*\\.)*[a-zA-Z_$][a-zA-Z\\d_$]*" ;
if(inputString.matches(regexForBasicClassNameValidation))
{
try {
Class.forName(inputString) ;
System.out.println("Valid class name");
} catch (ClassNotFoundException e) {
System.out.println("Invalid Class name or class not found in classpath ");
}
}
else
{
System.out.println("Not a class name");
}
答案 1 :(得分:1)
Class clazz = null;
try
{
clazz = Class.forName(myString);
}
catch (ClassNotFoundException e)
{
System.out.println("This isn't a class");
}