java反射求解 学习使用反射

mr_skyblue 2012-06-03 08:09:41
学习使用反射
创建beanFactory
用户用法
BeanFactory.getBean(“bean1”)
BeanFactory.Invoke(“Class1.Test”)
这是题目,但是JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 就是说我用反射机制可以得到任意一个类的属性和方法,有了对象,可以得到对象所属的类的名字和方法属性等等。。可是和BeanFactory有什么关系?这个题目的意思是什么?
...全文
186 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuhaibin500 2012-06-05
  • 打赏
  • 举报
回复
关于反射,其实挺简单的,推荐你看看马世兵的关于反射的视频,只有几集,不过讲的很清楚了

我也是通过那个视频自学的
weitao1234 2012-06-05
  • 打赏
  • 举报
回复
public interface BeanFactory
{
public Object getBean(String name);
}
weitao1234 2012-06-05
  • 打赏
  • 举报
回复
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class ClassPathXmlApplicationContext implements BeanFactory
{

private Map<String, Object> map = new HashMap<String, Object>();

@SuppressWarnings("unchecked")
public ClassPathXmlApplicationContext() throws Exception
{

SAXBuilder sb = new SAXBuilder();

Document document = sb.build(this.getClass().getClassLoader().getResourceAsStream("beans.xml"));

Element root = document.getRootElement();//获取根元素

List<Element> list = root.getChildren("bean");

for(int i=0; i<list.size(); i++)
{
Element element = list.get(i);

String id = element.getAttributeValue("id");
String clazz = element.getAttributeValue("class");

System.out.println(id+":"+clazz);

Object o = Class.forName(clazz).newInstance();
map.put(id, o);

for(Element propertyElement : (List<Element>)element.getChildren("property"))
{
String name = propertyElement.getAttributeValue("name");

String bean = propertyElement.getAttributeValue("bean");

Object beanObject = map.get(bean);

String methodName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);

System.out.println("methodName: "+methodName);

Method method = o.getClass().getMethod(methodName, beanObject.getClass().getInterfaces()[0]);

method.invoke(o, beanObject);
}
}
}

@Override
public Object getBean(String name)
{
return map.get(name);
}

}


feiyunzaipiao 2012-06-04
  • 打赏
  • 举报
回复
BeanFactory是一个工厂类,在最基本的实现外边封装一层对外的接口
古布 2012-06-04
  • 打赏
  • 举报
回复
学习反射最好看java.lang.reflect,最基本。然后再学习spring

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧