Java 为什么在从HashMap检索的类名(带包)通过class.forName()时无法获取该类?
我有一个HashMap,它包含一些东西(HashMap的内容如下所示)。当我将dependencyClassName存储在变量中(假设dependencyClassName)并将其作为参数发送到Java 为什么在从HashMap检索的类名(带包)通过class.forName()时无法获取该类?,java,reflection,Java,Reflection,我有一个HashMap,它包含一些东西(HashMap的内容如下所示)。当我将dependencyClassName存储在变量中(假设dependencyClassName)并将其作为参数发送到Class.forName(),它会显示ClassNotFoundException 但是,如果我在双引号内设置与Class.forName()的参数相同的类名,而不是从HashMap中获取它,则效果很好 我不明白这里有什么问题。我已经把代码贴在下面了 HashMap<String,String&g
Class.forName()
,它会显示ClassNotFoundException
但是,如果我在双引号内设置与Class.forName()
的参数相同的类名,而不是从HashMap中获取它,则效果很好
我不明白这里有什么问题。我已经把代码贴在下面了
HashMap<String,String> dependency = (HashMap<String, String>) map.get("dependency"); //It contains ({dependencyClassName2= dao.TransactionDAO, dependencyClassName1= dao.AcountMasterDAO, dependencyType1=dao.IAcountMaster, dependencyType2=dao.ITransaction})
ArrayList<Object> className = new ArrayList<Object>();
String dependencyClassName = dependency.get("dependencyClassName1");
try {
System.out.println("in factory dependency: " + dependencyClassName); //dependencyClassName = "dao.AcountMasterDAO"
Class cls = Class.forName(dependencyClassName);//It gives ClassNotFoundException
Class cls = Class.forName("dao.AcountMasterDAO");//It works fine
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
HashMap依赖项=(HashMap)map.get(“依赖项”)//它包含({dependencyClassName2=dao.TransactionDAO,dependencyClassName1=dao.AcountMasterDAO,dependencyType1=dao.IAcountMaster,dependencyType2=dao.ITransaction})
ArrayList className=新的ArrayList();
字符串dependencyClassName=dependency.get(“dependencyClassName1”);
试一试{
System.out.println(“工厂内依赖项:+dependencyClassName);//dependencyClassName=“dao.AcountMasterDAO”
Class cls=Class.forName(dependencyClassName);//它给出ClassNotFoundException
Class cls=Class.forName(“dao.AcountMasterDAO”);//工作正常
}
catch(classnotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
值中有一个前导空格
dependencyClassName1= dao.AcountMasterDAO