为了账号安全,请及时绑定邮箱和手机立即绑定

我的也报空指针异常,能麻烦老师看一下吗?谢谢!

class Person {
    private Car car;
    public Person(Car car){
        this.car=car;
    }
    public void goHome(){
        car.start();
        car.drive();
        car.stop();
    }
}

class Car{
     public Car(){}
     public void start(){}
     public void drive(){}
     public void stop(){}
}

class IoCContainer{
    private Map<String,Object> beans=new ConcurrentHashMap<>();

    public Object getBean(String beanID){
        return beans.get(beanID);
    }

    public void setBean(Class<?> clazz,String beanID,String... paramBeanIDs){
        //1.组装构造方法需要的参数值
        Object[] paramValues=new Object[paramBeanIDs.length];
        for(int i=0;i<paramValues.length;i++){
            paramValues[i]=beans.get(paramBeanIDs);
        }
        //2.调用构造方法实例化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");
        }
        //3.将实例化的bean放入beans
       beans.put(beanID,bean);
    }
}


public class Test2{
    private IoCContainer container=new IoCContainer();

    @Before
    public void before(){
        container.setBean(Car.class,"car");
        container.setBean(Person.class,"person","car");
    }

    @Test
    public void test(){
        Person zhangSan=(Person) container.getBean("person");
        zhangSan.goHome();
    }

}


正在回答

2 回答

https://img1.sycdn.imooc.com//5d282c0a0001334604760103.jpg

这个地方写错了

0 回复 有任何疑惑可以回复我~
#1

xintf 提问者

嗯嗯,谢谢老师。下面一行的paramBeanIDs漏写下标了,改过来就可以了。
2019-07-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我的也报空指针异常,能麻烦老师看一下吗?谢谢!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信