问答详情
源自:1-3 实现一个自己的IoC

请问这个错误有谁能帮我看看吗Exception in thread "main" java.lang.NullPointerException

/**
 * @author l
 *1.实例化bean
 *2.保存bean
 *3.提供bean
 *
 *4.每个bean有一个唯一id
 */
public class IoCContainer {

   private Map<String,Object> beans = new ConcurrentHashMap<String,Object>();
   
   public Object getBean(String beanId) {
      return beans.get(beanId);
   }
   
   /**
    * 委托IOC容器创建一个bean
    * 根据beanId获取一个bean
    * @author l
    *clazz:首先告诉IoC你要实例化的bean来源于哪个类/要创建的bean的class
    *beanId:告诉IoC bean的id是什么
    *paramBeanId:要创建的bean的class的构造方法所需要的参数的beanId们
    */
   public void setBean(Class<?> clazz,String beanId,String... paramBeanIds) {
      //组装构造方法所需的参数值
      Object[] paramValues = new Object[paramBeanIds.length];
      for(int i=0;i<paramBeanIds.length;i++) {
         paramValues[i]=beans.get(paramBeanIds[i]);
      }
      //调用构造方法实例化bean
      Object bean = null;
      for(Constructor<?>constructor:clazz.getConstructors()) {
         try {
            bean = constructor.newInstance(paramValues);
         }catch(InstantiationException e){
          }catch(IllegalAccessException e) {
          }catch(InvocationTargetException e) {
          }
      }
      if(bean==null) {
         throw new RuntimeException("找不到合适的构造方法实例化bean");
      }
      //将实例化的bean放入beans
      beans.put(beanId, bean);
   }
}

http://img3.mukewang.com/5db8018400015b5013450873.jpg

提问者:慕瓜1587760 2019-10-29 17:09

个回答

  • 帝国大学
    2021-05-15 17:08:20

    http://img2.mukewang.com/609f8f6b0001625803490241.jpg

    在test中创建IoCTest.java

  • 慕粉9404184
    2019-11-02 17:07:55

    兄弟你的main方法没有啊   看你那个命名应该是测试类  但是你测试类的注解也没有写