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ÊDZ»´úÀíµÄ·½·¨£¬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ÊÇÔÚ¶ÑÉÏΪ¶ÔÏó·ÖÅä¿Õ¼äµÄ
À¬»ø»ØÊÕÆ÷Ö»¸úÄÚ´æÓйأ¬Ê²Ã´IO°¡£¬ÍøÂçÁ¬½Ó°¡£¬¹ÜËüPÊÂ
µ±¿ÉÓÃÄÚ´æÊýÁ¿½ÏµÍʱ£¬Sun°æ±¾µÄÀ¬»ø»ØÊÕÆ÷²Å»á±»¼¤»î
ÔÚÀ¬»ø»ØÊÕÆ÷»ØÊÕÀ¬»øÖ®Ç°£¬ÎÒÃÇÏÈÀ´Á˽âÒ»ÏÂJava·ÖÅä¶ÔÏóµÄ·½Ê½£¬JavaµÄ¶Ñ¸üÏñÒ»¸ö´«ËÍ´ø£¬Ã¿·ÖÅäÒ» ......
¼ÙÈçÄãÔÚÒ»¸öÎïÁ÷ÔËÊ乫˾£¬Óиö¿Í»§ÒªÇóÄãΪËûÔËÊäÒ»¶¨ÊýÁ¿µÄ²úÆ·µ½Ä³µØ£¬Ê¹ÓÃijÖÖ½»Í¨¹¤¾ß£®ÄÇÎÒÃǼÙÉèÄãµÄ¹ÜÀí³ÌÐòÖÐÓÐTruckÀ࣬TrainÀ࣬PlaneÀàרÃÅÓÃÀ´ÊµÏÖʹÓò»Í¬½»Í¨¹¤¾ßµÄ³É±¾¼ÆË㣬¶¼Óз½·¨cost(Double weight,Double space);ÄÇô£¬ÎÊÌâ³öÀ´ÁË£®¿Í»§¶ÔÓÚÔËÊäÆ÷ÖÖÀàÊÇ¿ÉÑ¡ÔñµÄ£¬ÄãÊDz»ÊÇÒª¶ÔÿÖÖÔËÊäÆ÷new¸öʵÀý· ......
http://www.cn-java.com/www1/?action-viewnews-itemid-3295
ÎÒÏë£Ê£Á£Ö£ÁµÄ°®ºÃÕߣ¬ÓÈÆäÊdzõѧÕß´ó¶¼ÓйýÕâÑùµÄ¾Àú£¬¾ÍÊÇϲ»¶£Ê£Á£Ö£Á±à³ÌÓïÑÔ£¨Õâ¸öÈ˵ÄÇé¿ö¿ÉÄܲ»Ò»Ñù£©£¬µ«ÊÇÓÐʱºò×Ü»á¾õµÃJAVAµÄÓŵã±ãÊÇËýµÄ“ÖÂÃü”µÄȱµã¡£´ó¼ÒµÄÐÅÄîÒÀ¾ÉÊǓһ´Î±àÒ룬µ½´¦ÔËÐДµ«ÊǾÍÊÇÒòΪÖÁÒ»µã£Ê£Á£Ö£Á ......
jarÎļþÌý˵¹ýÂð£¬Ã»ÓУ¿»òÕßİÉú£¡ºÃ£¬Ã»¹ØÏµ£¬Õâ¾ÍÊÇÎÒÃǵĵÚÒ»Õ¾£º´ò°ü·¢²¼¡£
Ϊʲô»áÓÐÕâ¸öÍæÒâÄØ£¬Ê×ÏÈ£¬ÕâÊÇjarµÄÈ«³Æ£ºJavaTM Archive (JAR) file£¬Êǵ쬾ÍÊÇjava´æµµÎļþ¡£ÕâÓеãÀàËÆzipÎļþ£¬ÏëÒ»ÏëËüÊǸÉʲôµÄÓõÄÄØ£¬Ñ¹Ëõ£¡£¿Ã»´í¾ÍÊÇҪѹËõ£¬½«ÎÒÃÇÔÏÈÁãÉ¢µÄ¶«Î÷·Åµ½Ò»Ï£¬ÖØÐÂ×éÖ¯£¬ËùÓÐÕâЩĿµÄÖ»ÓÐÒ» ......