代码之家  ›  专栏  ›  技术社区  ›  S.MANDAL

为什么当从HashMap检索到的类名(带包)通过类时,我无法获取该类。forName()?

  •  -1
  • S.MANDAL  · 技术社区  · 7 年前

    我有一个HashMap,它包含一些内容(HashMap的内容如下所示)。当我将dependencyClassName存储在变量中(假设dependencyClassName)并将其作为参数发送到 Class.forName() ,它显示 ClassNotFoundException

    但如果我将相同的类名设置为 班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();
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   user207421    7 年前
    dependencyClassName1= dao.AcountMasterDAO
    

    值中有一个前导空格。