1、反射的定义,通俗点举个例子就行。
2、项目中常用到不,如果用到,一般是解决什么问题或这需求,最好也能举个例子。
3、还有代理那一块,就是invocationhindler接口,proxy类,如何应用
4、动态代理,和静态代理异同点。小弟已经研究过了,就是感觉自己掌握的有些模糊,所以想请各位说下自己的理解。对比一下自己的理解,这样获取能够扬长避短,嘿嘿,学习学习最后谢谢回复的网友
2、项目中常用到不,如果用到,一般是解决什么问题或这需求,最好也能举个例子。
3、还有代理那一块,就是invocationhindler接口,proxy类,如何应用
4、动态代理,和静态代理异同点。小弟已经研究过了,就是感觉自己掌握的有些模糊,所以想请各位说下自己的理解。对比一下自己的理解,这样获取能够扬长避短,嘿嘿,学习学习最后谢谢回复的网友
解决方案 »
- 关于配置AXIS2 SERVICE.XML 请问如何配置
- java 读取word问题,大家进来看下啊。。。。。。
- 高手帮忙,sqlserver2000中读取数据,然后插入到mysql数据库中,出错!
- Struts2 的Action能否自动触发
- ss
- 基于struts架构的ejb部署问题(ejb-jar.xml)
- 关于hibernate配置问题,高分求解
- 怎样把log4j产生的文件写入数据库?
- Struts的简单问题:怎么写数据修改页面?
- 高手进来看看咋回事?我用eclipse+weblogic+hibernate 写的一个在数据库中插入一行的小程序,运行出错
- 求高手啊
- jquery中$.getJSON方法未能获取到返回的值
2、a、反射能够获取一个类的实例b、JDBC获取一个connection的时候,class.forName()这个用的最多
3、Invocationhandle接口,有一个invoke方法,方法有4个参数,研究半天理解为方法在执行时创建返回一个接口,其中第一个参数不理解,至于proxy类,里面有一个newProxyInstance(),这个方法里面的三个参数,也都能理解,类加载器,实例化接口,this只自身(这个有点不解)
4、动态代理比静态先进,使代码耦合性降低这是我个人研究的心得,嘿嘿
2、很多框架根源就是用了反射机制,像Spring,你往配置文件里一配,就知道你的接口该由哪个类来实现,换个实现的话把这个文件一改就行了,不用动代码。
3、不太了解;
4、动态代理和静态代理当然都是代理,就是帮助间接生成对象,去除依赖。静态的话,只是相当于中间加了一层,如果被代理的改变了,它也得跟着改吧;动态代理我想可以以传参的方式,实现通用性。
public class TestHandler implements InvocationHandler
{
Object target;
public Object getProxy(Object target)
{
this.target = target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
public Object invoke(Object arg0, Method arg1, Object[] arg2)
throws Throwable
{
// TODO Auto-generated method stub
System.out.println("before");
Object result = arg1.invoke(target, arg2);
if ("test".equals(result))
{
result = "fuck";
}
System.out.println("after");
return result;
}
}
/**
* 工厂方法
* 根据输入的接口名字.class 动态的生成实现这个接口的实现类的一个实例
* @author fangjuyue
*
*/
public class DAOFactory { public static Object getInstance(Class c){
String interfacename = c.getSimpleName();
String classname = ConfigUtil.getProperty(interfacename);
Object obj = null;
try {
obj = Class.forName(classname).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
package util;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 读取DAO的配置文件 将dao和dao的实现类想对应 返回实现类的className全路径
* @author fangjuyue
*
*/
public class ConfigUtil {
private static Properties props =
new Properties();
static{
/**
* 读取配置文件
*/
InputStream ips =
ConfigUtil.class.getClassLoader()
.getResourceAsStream("daoconfig.properties");
try {
props.load(ips);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getProperty(String key){
return props.getProperty(key);
}
}daoconfig.properties文件如下
EnterpriseDAO=dao.impl.EnterpriseDAOImpl
CustomerDAO=dao.impl.CustomerDAOImpl
CarMessageDAO=dao.impl.CarMessageDAOImpl
GoodsDAO=dao.impl.GoodsDAOImpl
ManagerDAO=dao.impl.ManagerDAOImpl
PlacardDAO=dao.impl.PlacardDAOImpl
class Student
{
Integer id;
String name;
Integer age;
}的每个属性里。。