java 动态代理
1、首先必须有个接口
package reflection;
public interface HelloWorld {
void sayHelloWorld();
void testHello(String hello);
}
2、接口的实现类
package reflection;
public class HelloWorldImpl implements HelloWorld {
public void sayHelloWorld() {
System.out.println("Hello World!");
}
public void testHello(String hello) {
System.out.println(hello);
}
}
3、实现动态代理类,此类必须实现接口InvocationHandler,实现洗接口的方法
invoke(Object proxy, Method method, Object[] args)
在实际使用时,第一个参数obj一般是指代理类,method是被代理的方法,args为该方法的参数数组。
package reflection;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class HelloWorldHandler implements InvocationHandler {
// 要代理的原始对象
private Object objOriginal;
/**
* 构造函数。
* @param obj 要代理的原始对象。
*/
public HelloWorldHandler(Object obj) {
this.objOriginal = obj;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result;
// 方法调用之前
doBefore();
// 调用原始对象的方法
result = method.invoke(this.objOriginal, args);
// 方法调用之后
doAfter();
return result;
}
private void doBefore() {
System.out.println("before method invoke!");
}
private void doAfter() {
System.out.println("after method invoke!");
}
}
Proxy:该类即为动态代理类,作用类实现了InvocationHandler接口的代理类,其中主要包含以下函数。
protected Proxy(InvocationHandler h):构造函数,用于给内部的h赋值。
static Class getProxyClass (ClassLoader loader, Class[] interfaces):获得一个代理类,其中loader是类装载器,interfaces是真实类所拥有的全部接口的数组。
static Object newProxyInstance(
相关文档:
由于大家对package的使用存在太多困惑,我在这里将自己对于package的使用的领悟进行一点总结:
package中所存放的文件
所有文件,不过一般分一下就分这三种
1,java程序源文件,扩展名为.java。
2,编译好的java类文件,扩展名为.class。
3,其他文件,其他任何文件,也称为resource
例如图片 ......
JAVA内部培训资料
一、JAVA基础培训系列
1.孙鑫JAVA高级软件工程师班培训录像(2DVD)
简介:光盘由孙鑫老师亲自授课录制。循序渐进、通俗易懂、实战性强、内容全面、讲解深刻、问答形式是本套培训录像的特色。学员通过本套光盘的学习,能够快
速掌握Java编程语言,成为Java高手。
2.传智播客 ......
泛型是J2SE 5.0最重要的特性。他们让你写一个type(类或接口)和创建一个实例通过传递一个或多个引用类型。这个实例受限于只能作用于这些类型。
比如,在java 5,java.util.List 已经被泛化。当建立一个list对象时,你通过传递一个java类型建立一个List实例,此list实例只能作用于所传递的类型。这意味着如果你传递一个St ......
第一种方法为常见且易于上手
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作
等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
private java.util.Timer timer;
timer
= new Timer(true);
timer.schedule(
new java.util.TimerTask() {
public void run() { // ......
http://www.cn-java.com/www1/?action-viewnews-itemid-3295
我想JAVA的爱好者,尤其是初学者大都有过这样的经历,就是喜欢JAVA编程语言(这个人的情况可能不一样),但是有时候总会觉得JAVA的优点便是她的“致命”的缺点。大家的信念依旧是“一次编译,到处运行”但是就是因为至一点JAVA ......