Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

ÉîÈëÁ˽âJava ClassLoader¡¢Bytecode ¡¢ASM¡¢cglib

Ò»¡¢Java ClassLoader
1£¬Ê²Ã´ÊÇClassLoader
Óë C »ò C++ ±àдµÄ³ÌÐò²»Í¬£¬Java ³ÌÐò²¢²»ÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþ£¬¶øÊÇÓÉÐí¶à¶ÀÁ¢µÄÀàÎļþ×é³É£¬Ã¿Ò»¸öÎļþ¶ÔÓ¦ÓÚÒ»¸ö Java Àà¡£
´ËÍ⣬ÕâЩÀàÎļþ²¢·ÇÁ¢¼´È«²¿¶¼×°ÈëÄڴ棬¶øÊǸù¾Ý³ÌÐòÐèҪװÈëÄÚ´æ¡£ClassLoader ÊÇ JVM Öн«Àà×°ÈëÄÚ´æµÄÄDz¿·Ö¡£
¶øÇÒ£¬Java ClassLoader ¾ÍÊÇÓà Java ÓïÑÔ±àдµÄ¡£ÕâÒâζ×Å´´½¨Äú×Ô¼ºµÄ ClassLoader ·Ç³£ÈÝÒ×£¬²»±ØÁ˽â JVM µÄ΢Сϸ½Ú¡£
2£¬Ò»Ð©ÖØÒªµÄ·½·¨
A)loadClass
ClassLoader.loadClass() ÊÇClassLoaderµÄÈë¿Úµã¡£¸Ã·½·¨µÄ¶¨ÒåΪ£ºClass loadClass( String name, boolean resolve );
name£ºJVM ÐèÒªµÄÀàµÄÃû³Æ£¬Èç Foo »ò java.lang.Object¡£
resolve£º²ÎÊý¸æËß·½·¨ÊÇ·ñÐèÒª½âÎöÀà¡£
B)defineClass
defineClass·½·¨ÊÇClassLoaderµÄÖ÷Òª¾÷ÇÏ¡£¸Ã·½·¨½ÓÊÜÓÉԭʼ×Ö½Ú×é³ÉµÄÊý×é²¢°ÑËüת»»³ÉClass¶ÔÏó¡£
C)findSystemClass
findSystemClass·½·¨´Ó±¾µØÎļþϵͳÖÐÑ°ÕÒÀàÎļþ£¬Èç¹û´æÔÚ£¬¾ÍʹÓÃdefineClass½«Ô­Ê¼×Ö½Úת»»³ÉClass¶ÔÏó£¬ÒÔ½«¸ÃÎļþת»»³ÉÀà¡£
D)resolveClass
¿ÉÒÔ²»ÍêÈ«µØ(²»´ø½âÎö)×°ÈëÀ࣬Ҳ¿ÉÒÔÍêÈ«µØ(´ø½âÎö)×°ÈëÀà¡£µ±±àдÎÒÃÇ×Ô¼ºµÄloadClassʱ¿ÉÒÔµ÷ÓÃresolveClass£¬ÕâÈ¡¾öÓÚloadClassµÄresolve²ÎÊýµÄÖµ¡£
E)findLoadedClass
findLoadedClass³äµ±Ò»¸ö»º´æ£ºµ±ÇëÇóloadClass×°ÈëÀàʱ£¬Ëüµ÷Óø÷½·¨À´²é¿´ClassLoaderÊÇ·ñÒÑ×°ÈëÕâ¸öÀ࣬ÕâÑù¿ÉÒÔ±ÜÃâÖØÐÂ×°ÈëÒÑ´æÔÚÀàËùÔì³ÉµÄÂé·³¡£
3£¬Java2ÖÐClassLoaderµÄ±ä¶¯
1)loadClassµÄȱʡʵÏÖ
ÔÚJava2ÖÐloadClassµÄʵÏÖǶÈëÁË´ó¶àÊý²éÕÒÀàµÄÒ»°ã·½·¨£¬²¢Ê¹Äúͨ¹ý¸²¸ÇfindClass·½·¨À´¶¨ÖÆËü£¬ÔÚÊʵ±µÄʱºòfindClass»áµ÷ÓÃloadClass¡£
ÕâÖÖ·½Ê½µÄºÃ´¦ÊÇ¿ÉÄܲ»Ò»¶¨Òª¸²¸ÇloadClass£¬Ö»Òª¸²¸ÇfindClass¾ÍÐÐÁË£¬Õâ¼õÉÙÁ˹¤×÷Á¿¡£
2)з½·¨:findClass
loadClassµÄȱʡʵÏÖµ÷ÓÃÕâ¸öз½·¨¡£
3)з½·¨:getSystemClassLoader
Èç¹û¸²¸ÇfindClass»òloadClass£¬getSystemClassLoaderÈÃÎÒÃÇÒÔʵ¼ÊClassLoader¶ÔÏóÀ´·ÃÎÊϵͳClassLoader£¬¶ø²»Êǹ̶¨µÄ´ÓfindSystemClass µ÷ÓÃËü¡£
4)з½·¨:getParent
ΪÁ˽«ÀàÇëÇóίÍиø¸¸ClassLoader£¬Õâ¸öз½·¨ÔÊÐíClassLoader»ñÈ¡ËüµÄ¸¸ClassLoader¡£
4£¬¶¨ÖÆClassLoader
ÆäʵÎÒÃÇ»ò¶à»òÉÙ¶¼Ê¹Óùý¶¨ÖƵÄClassLoader£¬ÒòΪApplet²é¿´Æ÷ÖоͰüº¬Ò»¸ö¶¨ÖƵÄClassLoader¡£
Ëü²»ÔÚ±¾µØÎļþϵͳÖÐÑ°ÕÒÀ࣬¶øÊÇ·ÃÎÊÔ¶³Ì·þÎñÆ÷ÉϵÄ


Ïà¹ØÎĵµ£º

Java´´½¨¶ÔÏóµÄÈýÖÖ·½·¨

Ò»¡¢new
¡¡¡¡Ê¹ÓÃjavaµÄ¹Ø¼ü×ÖnewÀ´´´½¨¶ÔÏóʵÀý¡£¹¹Ô캯ÊýÁ´ÖеÄËùÓй¹Ô캯Êý¶¼»á±»×Ô¶¯µ÷Óá£
     Java´úÂ룺
¡¡¡¡  CreateInstance  instance = new  CreateInstance  ();
¶þ¡¢clone
      ¹¹Ô캯Êý²»±»×Ô¶¯µ÷Óá£
¡¡¡¡Java´úÂ룺  ......

È«ÇòʯÓÍÍøÕÐƸjava¹¤³Ìʦ

È«ÇòʯÓÍÍø£¨www.cippe.net£©´´½¨ÓÚ2004Ä꣬Öص㱨µÀÈ«ÇòʯÓ͹¤ÒµÐ²úÆ·¡¢Ð¼¼Êõ£¬¼á³ÖÆ·ÅÆ»¯¡¢×¨Òµ»¯¡¢¹ú¼Ê»¯µÄÕ½ÂÔ·¢Õ¹·½Ïò£¬´Ù½øÈ«ÇòʯÓ͹¤Òµ¼¼Êõ½»Á÷Óë×°±¸Ã³Ò×£¬ÍƽøÖйúʯÓ͹¤Òµ»¯·¢Õ¹Ëٶȣ¡
ÍøÕ¾º­¸ÇµØÖÊ¿±Ì½¡¢ÓÍÆø²Ø¡¢×ê¾®¡¢²â¾®¡¢²ÉÓÍ¡¢×°±¸¡¢º£ÑóʯÓÍ¡¢´¢ÔË¡¢Á¶»¯µÈרҵÁìÓò£¬´´°ìÁËʯÓÍ×ÊѶ¡¢Ð²úƷм¼Êõ¡¢Ê¯Ó ......

Java¿É±ä²ÎÊýÁбí

public class TestClass{
public static void main(String args[]){
VarArgs(1, "one");
VarArgs(2, "one", "two");
VarArgs(3, "one", "two", "three");
VarArgs(0); // Attention!
}
static void VarArgs(int nRequired, String... trailing){
System.out.print("Required: " + nRequired + " "); ......

ÀûÓÃLuceneËÑË÷JavaÔ´´úÂë

ijЩÍøÕ¾ÔÊÐíÈí¼þ¿ª·¢ÉçÍÅͨ¹ý·¢²¼¿ª·¢ÕßÖ¸ÄÏ¡¢°×ƤÊé¡¢FAQs¡¾³£¼ûÎÊÌâ½â´ð¡¿ºÍÔ´´úÂëÒÔʵÏÖÐÅÏ¢µÄ¹²Ïí¡£Ëæ×ÅÐÅÏ¢Á¿µÄÔö³¤£¬ºÍ¼¸¸ö¿ª·¢Õß¹±Ï׳ö×Ô¼ºµÄ֪ʶ¿â£¬ÓÚÊÇÍøÕ¾ÌṩËÑË÷ÒýÇæÀ´ËÑË÷Õ¾µãÉÏÏÖÓеÄËùÓÐÐÅÏ¢¡£ËäÈ»ÕâЩËÑË÷ÒýÇæ¶ÔÎı¾ÎļþµÄËÑË÷¿ÉÒÔ×öµÄºÜºÃ£¬µ«¶Ô¿ª·¢ÕßËÑË÷Ô´´úÂë×öÁ˱ȽÏÑϸñµÄÏÞÖÆ¡£ËÑË÷ÒýÇæÈÏΪԴ´úÂë ......

¡¶Effective Java¡·±Ê¼Ç

µÚÒ»ÕÂ ÒýÑÔ
(By wind5shy£ºhttp://blog.csdn.net/wind5shy)
 
µÚ¶þÕ ´´½¨ºÍÏú»Ù¶ÔÏó
(By wind5shy£ºhttp://blog.csdn.net/wind5shy)
µÚ1Ìõ£º¿¼ÂÇÓþ²Ì¬¹¤³§·½·¨´úÌæ¹¹Ô캯Êý
 
ºÃ´¦£º
¾²Ì¬¹¤³§·½·¨ÓÐÃû×Ö£¬±í´ï¸üÇå³þ¡£
²»Ðè´´½¨ÐµĶÔÏó¡£
¿ÉÒÔ·µ»ØÔ­·µ»ØÀàÐ͵Ä×ÓÀàÐͶÔÏó¡£Ó¦Óãº1.·µ»ØÀàÐͶ¨ÒåΪ½ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ