A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张玉建 中级黑马   /  2013-9-17 22:48  /  1784 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张玉建 于 2013-9-17 23:17 编辑

在BeanFactory内出现NullPointerException
求解释
package com.itheima.beanfactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import com.itheima.Advice;
public class BeanFactory {
//创建配置文件,io流的字节流,properties
Properties pro=new Properties();//util包中的io流用于配置文件。
//构造函数中
public BeanFactory(InputStream ips)
{
  try {
   pro.load(ips);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}
public Object getBean(String name) throws InstantiationException, IllegalAccessException, ClassNotFoundException
{
  
  String className = pro.getProperty(name);//拿到对应的类名名字。
  Object bean=null;
  try {
   Class clazz=Class.forName(className);
   //javaBean必须有一个不带参数的构造方法,newInstance()创建实例对象。
    bean= clazz.newInstance();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  //测试是那个类的实例吗/
  if (bean instanceof ProxyFactoryBean )
  {
   Object proxy=null;
   //创建代理对象,
   ProxyFactoryBean proxyFactoryBean=(ProxyFactoryBean)bean;
   try {
    Advice advice= (Advice)Class.forName(pro.getProperty(name+".advice")).newInstance();
    Object trgert=Class.forName(pro.getProperty(name+".trgert")).newInstance();
    proxyFactoryBean.setAdvice(advice);//
    proxyFactoryBean.setTrgert(trgert);//目标
     proxy= proxyFactoryBean.getProxy();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   //Object proxy =((ProxyFactoryBean)bean).getProxy();//beanfactory创建实例对象。
   return proxy;
  }
  return bean;
  
}
}



at com.itheima.beanfactory.BeanFactory.getBean(BeanFactory.java:43)
at com.itheima.beanfactory.AopFremWorkTest.main(AopFremWorkTest.java:14)
Exception in thread "main" java.lang.NullPointerException
at com.itheima.beanfactory.AopFremWorkTest.main(AopFremWorkTest.java:15)

Advice advice= (Advice)Class.forName(pro.getProperty(name+".advice")).newInstance();
也就是这里!求解释!



评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

2 个回复

倒序浏览
To 金牌黑马 2013-9-18 06:21:20
沙发
以后把代码贴在 代码框里
回复 使用道具 举报
Advice advice= (Advice)Class.forName(pro.getProperty(name+".advice")).newInstance();
这里的getProperty(String key)如果没有在属性列表中未能找到key键,返回null
Class.forName(null)自然抛异常啦,你看看name+“.advice”有没有对应的键。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马