Java?е?????????
???????????? ???????[ 2014/3/18 9:24:41 ] ????????java ??????? ????
????????
?????????????hadoop??RPC???????hadoop?У?DataNode??NameNode????????????????????RPC????????????????????????java NIO??????DataNode??????????NameNode???????????????NameNode????????????????????hadoop??RPC????????????????????????????????????????????????????????????????????ɡ?
???????????£?
package cn.xiaolu;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
* ?????????????????????InvocationHandler???????????Proxy ????????????????????????????????
* ????????????????
* ???????????????????? ???????????д????????????????????????????????????????????????????????????????????????
* ????????????????????????????????????????????????????????????????????????????????????д????????
* InvocationHandler ?????????invoke?????????????Proxy?????????newProxyInstance?????????????????????????????????????????????????
* ??????????????????????Handler?????′????е?Invoker???????????????????????????????????о???????????t????????????????????????~
*/
//?????
interface AbstractClass {
public void show();
}
// ??????A
class ClassA implements AbstractClass {
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("????A??");
}
}
// ??????B
class ClassB implements AbstractClass {
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("????B??");
}
}
//????????????InvocationHandler???
class Invoker implements InvocationHandler {
AbstractClass ac;
public Invoker(AbstractClass ac) {
this.ac = ac;
}
@Override
public Object invoke(Object proxy?? Method method?? Object[] arg)
throws Throwable {
//?????????????Щ????
method.invoke(ac?? arg);
//???????????????Щ????
return null;
}
}
/**
* ??????
* @author С·
*/
class DynamicProxyTest {
public static void main(String[] args) {
//??????????ClassB????????
Invoker invoker1=new Invoker(new ClassA());
//??t?????ClassA?????
AbstractClass ac1 = (AbstractClass) Proxy.newProxyInstance(
AbstractClass.class.getClassLoader()??
new Class[] { AbstractClass.class }?? invoker1);
//????ClassA??show??????
ac1.show();
//??????????ClassB????????
Invoker invoker2=new Invoker(new ClassB());
//??t?????ClassB?????
AbstractClass ac2 = (AbstractClass) Proxy.newProxyInstance(
AbstractClass.class.getClassLoader()??
new Class[] { AbstractClass.class }?? invoker2);
//????ClassB??show??????
ac2.show();
}
}
???????????к???????£?
????????A??
????????B??
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11