|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
ÀüÀÇ Å¬·¡½º ´ÙÀ½ÀÇ Å¬·¡½º | ÇÁ·¹ÀÓ ÀÖ¾î ÇÁ·¹ÀÓ ¾øÀ½ | ||||||||||
°³¿ä: »óÀÚ | Çʵå | constructor | ¸Þ¼Òµå | »ó¼¼: Çʵå | constructor | ¸Þ¼Òµå |
java.lang.Object | +--java.lang.reflect.Proxy
Proxy
´Â µ¿Àû ÇÁ·Ï½ÃÀÇ Å¬·¡½º ¹× ÀνºÅϽº¸¦ »ý¼ºÇÏ´Â Á¤Àû ¸Þ¼Òµå¸¦ Á¦°øÇØ, ¶Ç, ±×·¯ÇÑ ¸Þ¼Òµå¿¡ ÀÇÇØ »ý¼ºµÈ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º ¸ðµç ½´ÆÛ Ŭ·¡½ºÀ̱⵵ ÇÕ´Ï´Ù.
ÀÎÅÍÆäÀ̽º Foo
ÀÇ ÇÁ·Ï½Ã¸¦ »ý¼ºÇÏ·Á¸é , ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÕ´Ï´Ù.
InvocationHandler handler = new MyInvocationHandler(...); Class proxyClass = Proxy.getProxyClass( Foo.class.getClassLoader(), new Class[] { Foo.class }); Foo f = (Foo) proxyClass. getConstructor(new Class[] { InvocationHandler.class }). newInstance(new Object[] { handler });ȤÀº Á» ´õ ´Ü¼øÇϰÔ, ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÕ´Ï´Ù.
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class[] { Foo.class }, handler);
µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º (ÀÌÇÏ ´ÜÁö ÇÁ·Ï½Ã Ŭ·¡½º¶ó°í ºÎ¸¥´Ù)´Â Ŭ·¡½º »ý¼ºÀÇ ½ÇÇà½Ã·Î ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽ºÀÇ ¸®½ºÆ®¸¦ ±¸ÇöÇϴ Ŭ·¡½º¿¡¼, ÀÌÇÏ¿¡ ¸»ÇÏ´Â µ¿ÀÛÀ» ÇÕ´Ï´Ù. ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽º´Â ÇÁ·Ï½Ã Ŭ·¡½º°¡ ±¸ÇöÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. ÇÁ·Ï½Ã ÀνºÅϽº´Â ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ÀνºÅϽºÀÔ´Ï´Ù. °¢ ÇÁ·Ï½Ã ÀνºÅϽº¿¡´Â °ü·ÃÇÑ È£Ãâ Çڵ鷯 ¿ÀºêÁ§Æ®°¡ ÀÖ¾î, À̰ÍÀº ÀÎÅÍÆäÀ̽º InvocationHandler
¸¦ ±¸ÇöÇϰí ÀÖ½À´Ï´Ù. ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽ºÀÇ 1 °³¸¦ »ç¿ëÇÑ ÇÁ·Ï½Ã ÀνºÅϽº¿¡¼ÀÇ ¸Þ¼Òµå È£ÃâÀº ÀνºÅϽºÀÇ È£Ãâ Çڵ鷯ÀÇ invoke
¸Þ¼Òµå¿¡ µð½ºÆÌÄ¡ µÇ¾î ºÒ·Á °£ ¸Þ¼Òµå¸¦ ½Äº°ÇÏ´Â java.lang.reflect.Method
¿ÀºêÁ§Æ®, ¹× Àμö¸¦ ÀúÀåÇÏ´Â Object
ÇüÀÇ ¹è¿À» ÇÁ·Ï½Ã ÀνºÅϽº¿¡ ÀεµÇÕ´Ï´Ù. È£Ãâ Çڵ鷯´Â encode µÈ ¸Þ¼Òµå È£ÃâÀ» ÀûÀýÈ÷ ó¸®ÇØ, È£Ãâ Çڵ鷯°¡ µ¹·ÁÁÖ´Â °á°ú°¡, ÇÁ·Ï½Ã ÀνºÅϽº¿¡¼ÀÇ ¸Þ¼Òµå È£ÃâÀÇ °á°ú·Î¼ µ¹·ÁÁÖ¾îÁý´Ï´Ù.
ÇÁ·Ï½Ã Ŭ·¡½º¿¡´Â ÀÌÇÏÀÇ ÇÁ·ÎÆÛƼ°¡ ÀÖ½À´Ï´Ù.
"$Proxy"
·Î ½ÃÀ۵Ǵ Ŭ·¡½º¸íÀÇ area¸¦ ÇÁ·Ï½Ã Ŭ·¡½º¸¦ À§Çؼ(¶§¹®¿¡) È®º¸ÇØ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù.
java.lang.reflect.Proxy
¸¦ È®ÀåÇÕ´Ï´Ù.
Class
¿ÀºêÁ§Æ®·Î getInterfaces
¸¦ È£ÃâÇϸé(ÀÚ), °°Àº ÀÎÅÍÆäÀ̽ºÀÇ ¸®½ºÆ®¸¦ »ý¼º½Ã·Î ÁöÁ¤µÈ ¼ø¼·Î ÀúÀåÇÏ´Â ¹è¿ÀÌ µ¹·ÁÁÖ¾îÁý´Ï´Ù. Class
¿ÀºêÁ§Æ®·Î getMethods
¸¦ È£ÃâÇϸé(ÀÚ), ±×·¯ÇÑ ÀÎÅÍÆäÀ̽ºÀÇ ¸Þ¼Òµå ¸ðµç °ÍÀ» Æ÷ÇÔÇÑ Method
¿ÀºêÁ§Æ®ÀÇ ¹è¿ÀÌ µ¹·ÁÁÖ¾îÁý´Ï´Ù. getMethod
¸¦ È£ÃâÇϸé(ÀÚ), ¿¹»óµÇ´Â ¸Þ¼Òµå°¡ ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽º·Î ¹ß°ßµË´Ï´Ù.
Proxy.isProxyClass
¸Þ¼Òµå´Â Proxy.getProxyClass
¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁø ÇÁ·Ï½Ã Ŭ·¡½º, ȤÀº Proxy.newProxyInstance
¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁø ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½ºµîÀÇ ÇÁ·Ï½Ã Ŭ·¡½º¿¡ ÀεµÇØÁ³À» °æ¿ì¿¡ true ¸¦ µ¹·ÁÁÝ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì´Â false ¸¦ µ¹·ÁÁÝ´Ï´Ù.
java.security.ProtectionDomain
´Â java.lang.Object
µîÀÇ bootstrap Ŭ·¡½º ·Î´õ¿¡ ÀÇÇØ ·Îµå µÈ ½Ã½ºÅÛ Å¬·¡½ºÀÇ java.security.ProtectionDomain
¿Í °°½À´Ï´Ù. ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ Äڵ尡 ½Å·Ú¼ºÀÌ ÀÖ´Â ½Ã½ºÅÛ Äڵ忡 ÀÇÇØ »ý¼ºµÇ±â (À§ÇØ)¶§¹®¿¡ÀÔ´Ï´Ù. ÀÌ º¸È£ µµ¸ÞÀÎÀº Åë»ó,java.security.AllPermission
°¡ Çã°¡µË´Ï´Ù.
InvocationHandler
ÀÇ ±¸ÇöÀ» ÃëÇÏ´Â 1 °³ÀÇ public constructor ÀÌ ÀÖ½À´Ï´Ù. ¸®Ç÷º¼Ç API ¸¦ »ç¿ëÇØ public constructor ¿¡ ¾×¼¼½º ÇÏ´Â °Í ¿Ü¿¡,Proxy.newInstance
¸Þ¼Òµå¸¦ È£ÃâÇØ ÇÁ·Ï½Ã ÀνºÅϽº¸¦ »ý¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â Proxy.getProxyClass
ÀÇ È£Ãâ µ¿ÀÛÀ», È£Ãâ Çڵ鷯¸¦ °¡Áö´Â constructor ÀÇ È£Ãâ°ú °áÇÕÇÕ´Ï´Ù.
ÇÁ·Ï½Ã ÀνºÅϽº¿¡´Â ÀÌÇÏÀÇ ÇÁ·ÎÆÛƼ°¡ ÀÖ½À´Ï´Ù.
Foo
°¡ ÇÁ·Ï½Ã ÀνºÅϽº proxy
¹× ÀÎÅÍÆäÀ̽ºÀÇ 1 °³¸¦ ±¸ÇöÇϰí ÀÖ´Â °æ¿ì, ´ÙÀ½ÀÇ ½ÄÀÌ true ¸¦ µ¹·ÁÁÝ´Ï´Ù.
proxy instanceof Foo
¶Ç, ´ÙÀ½ÀÇ Ä³½ºÆ® Á¶ÀÛÀÌ ¼º°øÇÕ´Ï´Ù (ClassCastException
¸¦ ½½·Î¿ì ÇÏ´Â °æ¿ì¸¦ Á¦¿ÜÇÏ´Ù).
(Foo) proxy
Proxy.getInvocationHandler
¸Þ¼Òµå´Â ±× Àμö·Î¼ °Ç³×¹ÞÀº ÇÁ·Ï½Ã ÀνºÅϽº¿¡ °ü·ÃÇϴ ȣÃâ Çڵ鷯¸¦ µ¹·ÁÁÝ´Ï´Ù.
invoke
¸Þ¼Òµå¿¡ µð½ºÆÌÄ¡ µË´Ï´Ù.
java.lang.Object
·Î ¼±¾ðµÇ°í ÀÖ´Â hashCode
,equals
, ¶Ç´Â toString
ÀÇ °¢ ¸Þ¼ÒµåÀÇ ÇÁ·Ï½Ã ÀνºÅϽº¿¡¼ÀÇ È£ÃâÀº ÀÎÅÍÆäÀ̽º ¸Þ¼Òµå È£ÃâÀÌ À§¿¡¼ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ encode µÇ¾î µð½ºÆÌÄ¡ µÇ´Â °Í°ú °°Àº ¹æ¹ýÀ¸·Î, encode µÇ¾î È£Ãâ Çڵ鷯ÀÇ invoke
¸Þ¼Òµå¿¡ µð½ºÆÌÄ¡ µË´Ï´Ù. invoke
¿¡ ÀεµÇØÁø Method
¿ÀºêÁ§Æ®ÀÇ ¼±¾ð Ŭ·¡½º´Â java.lang.Object
°¡ µË´Ï´Ù. java.lang.Object
·ÎºÎÅÍ °è½ÂµÈ ÇÁ·Ï½Ã ÀνºÅϽºÀÇ ´Ù¸¥ public ¸Þ¼Òµå´Â ÇÁ·Ï½Ã ¸Þ¼Òµå¿¡ ÀÇÇØ ¿À¹ö¶óÀ̵å(override) µÇÁö ¾Ê±â ¶§¹®¿¡, ±×·¯ÇÑ ¸Þ¼ÒµåÀÇ È£ÃâÀº java.lang.Object
ÀÇ ÀνºÅϽº¸¦ È£ÃâÇÏ´Â °Í°ú °°Àº µ¿ÀÛÀ» ÇÕ´Ï´Ù.
ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ 2 °³ ÀÌ»óÀÇ ÀÎÅÍÆäÀ̽º°¡ °°Àº À̸§°ú ÆÄ¶ó¸ÞÀÌŸÇüŸ¦ °¡Áö´Â ¸Þ¼Òµå¸¦ Æ÷ÇÔÇÑ °æ¿ì, ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ÀÎÅÍÆäÀ̽ºÀÇ ¼ø¼°¡ Áß¿äÇÏ°Ô µË´Ï´Ù. ÇÁ·Ï½Ã ÀνºÅϽº·Î ÀÌ·¯ÇÑ Áߺ¹ ¸Þ¼Òµå°¡ ºÒ·Á °¬À» °æ¿ì, È£Ãâ Çڵ鷯¿¡ ÀεµÇØÁø Method
¿ÀºêÁ§Æ®´Â ¹Ýµå½Ã, ÇÁ·Ï½ÃÀÇ ¸Þ¼ÒµåÀÇ È£Ãâ¿¡ »ç¿ëµÈ ÀÎÅÍÆäÀ̽ºÀÇ ÂüÁ¶ÇüÀ¸·ÎºÎÅÍ ¼±¾ð Ŭ·¡½º¸¦ ÇÒ´çÇϰí ÇÒ ¼ö ÀÖ´Â ¿ÀºêÁ§Æ®ÀÏ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ÀÌ Á¦ÇÑÀÌ ÀÖ´Â °ÍÀº »ý¼ºµÈ ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ÇØ´çÀÇ ¸Þ¼Òµå ±¸ÇöÀÌ, È£Ãâ¿¡ »ç¿ëµÈ ÀÎÅÍÆäÀ̽º¸¦ ÆÇÁ¤ÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù. µû¶ó¼, Áߺ¹ ¸Þ¼Òµå°¡ ÇÁ·Ï½Ã ÀνºÅϽº·Î ºÒ·Á °¬À» °æ¿ì, ¸Þ¼Òµå È£ÃâÀÌ ¹ß»ýÇÑ ÂüÁ¶Çü¿¡ °ü°è¾øÀÌ, ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ÀÎÅÍÆäÀ̽ºÀÇ ¸®½ºÆ®ÀÇ ¸Þ¼Òµå¸¦ Á÷Á¢, ¶Ç´Â ½´ÆÛ ÀÎÅÍÆäÀ̽º °æÀ¯·Î °è½ÂÇØ Æ÷ÇÔÇÑ ÁÖ¿äÇÑ ÀÎÅÍÆäÀ̽ºÀÇ ¸Þ¼ÒµåÀÇ Method
¿ÀºêÁ§Æ®°¡, È£Ãâ Çڵ鷯ÀÇ invoke
¸Þ¼Òµå¿¡ ÀεµÇØÁý´Ï´Ù.
ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽º°¡ java.lang.Object
ÀÇ hashCode
,equals
, ¶Ç´Â toString
ÀÇ °¢ ¸Þ¼Òµå¿Í °°Àº À̸§°ú ÆÄ¶ó¸ÞÀÌŸÇüŸ¦ °¡Áö°í ÀÖ´Â ¸Þ¼Òµå¸¦ Æ÷ÇÔÇÑ °æ¿ì, ÇÁ·Ï½Ã ÀνºÅϽº·Î ÀÌ·¯ÇÑ ¸Þ¼Òµå°¡ ºÒ·Á °¡¸é(ÀÚ), È£Ãâ Çڵ鷯¿¡ ÀεµÇØÁø Method
¿ÀºêÁ§Æ®´Â ±× ¼±¾ð Ŭ·¡½º·Î¼ java.lang.Object
¸¦ °¡Áý´Ï´Ù. ¹Ù²Ù¾î ¸»Çϸé(ÀÚ),java.lang.Object
ÀÇ, public À̸ç final °¡ ¾Æ´Ñ ¸Þ¼Òµå´Â È£Ãâ Çڵ鷯¿¡ ¾î´À Method
¿ÀºêÁ§Æ®¸¦ ÀεµÇұ °áÁ¤ÇÒ ¶§¿¡, ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽ºÀÇ ¸ðµÎ¿¡°Ô ³í¸®ÀûÀ¸·Î ¿ì¼±ÇÕ´Ï´Ù.
Áߺ¹ ¸Þ¼Òµå°¡ È£ÃâÇØ Çڵ鷯¿¡ µð½ºÆÌÄ¡ µÇ´Â °æ¿ì,invoke
¸Þ¼Òµå´Â È£Ãâ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽ºÀÇ ¸Þ¼ÒµåÀÇ throws
ÀýÀÇ ¿¹¿Ü ŸÀÔÀÇ 1 °³¿¡ ÇÒ´çÇÏ°í °¡´ÉÇÑ È®ÀÎÀÌ ³¡³ ¿¹¿Ü ŸÀÔ¸¸À» ½½·Î¿ì ÇÒ ¼ö ÀÖ½À´Ï´Ù. invoke
¸Þ¼Òµå°¡, È£Ãâ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽ºÀÇ 1 °³ÀÇ ¸Þ¼Òµå·Î ¼±¾ðµÈ ¿¹¿Ü ŸÀÔÀÇ ¾î´À °Í¿¡µµ ÇÒ´çÇϰí ÇÒ ¼ö ¾ø´Â È®ÀÎÀÌ ³¡³ ¿¹¿Ü¸¦ ½½·Î¿ì ÇßÀ» °æ¿ì, È®ÀεǾî ÀÖÁö ¾ÊÀº UndeclaredThrowableException
°¡ ÇÁ·Ï½Ã ÀνºÅϽº¿¡¼ÀÇ È£Ãâ¿¡ ÀÇÇØ ½½·Î¿ì µË´Ï´Ù. ÀÌ Á¦ÇÑÀº invoke
¸Þ¼Òµå¿¡ ÀεµÇØÁø Method
¿ÀºêÁ§Æ®¿¡¼ÀÇ getExceptionTypes
ÀÇ È£Ãâ¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁø ¿¹¿Ü ŸÀÔÀÌ invoke
¸Þ¼Òµå¿¡ ÀÇÇØ ½½·Î¿ì µÇ¾îµµ, ¸ðµÎ ¹Ýµå½Ã ¼º°øÇÑ´Ù°í´Â ÇÒ ¼ö ¾ø´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
InvocationHandler
,
Á÷·ÄÈ µÈ Çü½Ä ÇʵåÀÇ °³¿ä | |
protected InvocationHandler |
h
ÀÌ ÇÁ·Ï½Ã ÀνºÅϽºÀÇ È£Ãâ Çڵ鷯ÀÔ´Ï´Ù. |
»ý¼ºÀÚÀÇ °³¿ä | |
protected |
Proxy (InvocationHandler h)
ÁöÁ¤µÈ °ªÀ¸·Î, ¼ºê Ŭ·¡½º (Åë»óÀº µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º)·ÎºÎÅÍ ±× È£Ãâ Çڵ鷯¿¡ »õ·Î¿î Proxy ÀνºÅϽº¸¦ ±¸ÃàÇÕ´Ï´Ù. |
¸Þ¼ÒµåÀÇ °³¿ä | |
static InvocationHandler |
getInvocationHandler (Object proxy)
ÁöÁ¤µÈ ÇÁ·Ï½Ã ÀνºÅϽºÀÇ È£Ãâ Çڵ鷯¸¦ µ¹·ÁÁÝ´Ï´Ù. |
static Class |
getProxyClass (ClassLoader loader,
Class [] interfaces)
Ŭ·¡½º ·Î´õ¿Í ÀÎÅÍÆäÀ̽ºÀÇ ¹è¿ÀÇ ÁöÁ¤µÈ ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ java.lang.Class ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù. |
static boolean |
isProxyClass (Class cl)
ÁöÁ¤µÈ Ŭ·¡½º°¡ getProxyClass ¸Þ¼Òµå ¶Ç´Â newProxyInstance ¸Þ¼Òµå¸¦ »ç¿ëÇØ µ¿ÀûÀ¸·Î »ý¼ºµÇ¾î ÇÁ·Ï½Ã Ŭ·¡½º°¡ µÇ´Â °æ¿ì¿¡¸¸, true ¸¦ µ¹·ÁÁÝ´Ï´Ù.
|
static Object |
newProxyInstance (ClassLoader loader,
Class [] interfaces,
InvocationHandler h)
ÁöÁ¤µÈ È£Ãâ Çڵ鷯¿¡ ´ëÇØ¼ ¸Þ¼Òµå È£ÃâÀ» µð½ºÆÌÄ¡ ÇÏ´Â ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽ºÀÇ ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù. |
Ŭ·¡½º java.lang. Object ¿¡¼ »ó¼Ó¹ÞÀº ¸Þ¼Òµå |
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
ÇʵåÀÇ »ó¼¼ |
protected InvocationHandler h
»ý¼ºÀÚÀÇ »ó¼¼ |
protected Proxy(InvocationHandler h)
Proxy
ÀνºÅϽº¸¦ ±¸ÃàÇÕ´Ï´Ù.
h
- ÀÌ ÇÁ·Ï½Ã ÀνºÅϽºÀÇ È£Ãâ Çڵ鷯¸Þ¼ÒµåÀÇ »ó¼¼ |
public static Class getProxyClass(ClassLoader loader, Class [] interfaces) throws IllegalArgumentException
java.lang.Class
¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù. ÇÁ·Ï½Ã Ŭ·¡½º´Â ÁöÁ¤µÈ Ŭ·¡½º ·Î´õ·Î Á¤ÀǵǾî ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º¸¦ ¸ðµÎ ±¸ÇöÇÕ´Ï´Ù. ÀÎÅÍÆäÀ̽ºÀÇ °°Àº ¼ø¿ÀÇ ÇÁ·Ï½Ã Ŭ·¡½º°¡ ¹ú½á Ŭ·¡½º ·Î´õ·Î Á¤Àǵǰí ÀÖ´Â °æ¿ì, ±âÁ¸ÀÇ ÇÁ·Ï½Ã Ŭ·¡½º°¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â ÀÌ·¯ÇÑ ÀÎÅÍÆäÀ̽ºÀÇ ÇÁ·Ï½Ã Ŭ·¡½º°¡ µ¿ÀûÀ¸·Î »ý¼ºµÇ¾î Ŭ·¡½º ·Î´õ·Î Á¤Àǵ˴ϴÙ.
Proxy.getProxyClass
¿¡ ÀεµÇØÁö´Â ÆÄ¶ó¹ÌÅÍ¿¡´Â ¸î°³ÀÇ Á¦¾àÀÌ ÀÖ½À´Ï´Ù.
interfaces
¹è¿ÀÇ Class
¿ÀºêÁ§Æ®´Â ¸ðµÎ, Ŭ·¡½º ¶Ç´Â ¿ø½ÃÀûÇüÀº ¾Æ´Ï°í ÀÎÅÍÆäÀ̽º¸¦ ³ªÅ¸³¾ Çʿ䰡 ÀÖ´Ù
interfaces
¹è¿ÀÇ 2 °³ÀÇ ¿ä¼Ò°¡ µ¿ÀÏÇÑ Class
¿ÀºêÁ§Æ®¸¦ ÂüÁ¶ÇÒ ¼ö ¾ø´Ù
cl
¹× ÀüÀÎÅÍÆäÀ̽º i
¿¡ ´ëÇØ, ÀÌÇÏÀÇ ½ÄÀÌ true °¡ ¾Æ´Ï¸é ¾ÈµÈ´Ù
Class.forName(i.getName(), false, cl) == i
interfaces
¹è¿ÀÇ »çÀÌÁî´Â 65535 ¸¦ ³Ñ¾î¼´Â ¾È µÈ´Ù
ÀÌ·¯ÇÑ Á¦¾à¿¡ 1 °³¿¡¼µµ À§¹ÝÇÏ´Â °æ¿ì´Â Proxy.getProxyClass
¿¡ ÀÇÇØ IllegalArgumentException
°¡ ½½·Î¿ì µË´Ï´Ù. interfaces
¹è¿ÀÇ Àμö ¶Ç´Â ±× ¿ä¼ÒÀÇ ¾î¶² °ÍÀΰ¡°¡ null
ÀÇ °æ¿ì´Â NullPointerException
°¡ ½½·Î¿ì µË´Ï´Ù.
ÁöÁ¤µÈ ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽ºÀÇ ¼ø¼´Â Áß¿äÇÑ Àǹ̸¦ °¡Áý´Ï´Ù. ÇÁ·Ï½Ã Ŭ·¡½º¿¡ ´ëÇÑ, °°Àº ÀÎÅÍÆäÀ̽ºÀÇ Æí¼ºÀ¸·Î ¼ø¼°¡ ´Ù¸¥ 2 °³ÀÇ ¿ä±¸ÀÇ °á°ú´Â 2 krÀÇ °³º°ÀÇ ÇÁ·Ï½Ã Ŭ·¡½º°¡ µË´Ï´Ù.
loader
- ÇÁ·Ï½Ã Ŭ·¡½º¸¦ Á¤ÀÇÇϴ Ŭ·¡½º ·Î´õinterfaces
- ÇÁ·Ï½Ã Ŭ·¡½º°¡ ±¸ÇöÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÇ ¸®½ºÆ®
IllegalArgumentException
- getProxyClass
¿¡ ÀεµÇØÁö´Â ÆÄ¶ó¹ÌÅÍ¿¡ °üÇÑ Á¦¾àÀÇ ¾î¶² °ÍÀΰ¡°¡ ÁöÄÑÁú ¼ö ¾ø¾ú´ø °æ¿ì
NullPointerException
- interfaces
¹è¿ÀÇ Àμö ¶Ç´Â ±× ¿ä¼ÒÀÇ ¾î¶² °ÍÀΰ¡°¡ null
ÀÇ °æ¿ìpublic static Object newProxyInstance(ClassLoader loader, Class [] interfaces, InvocationHandler h) throws IllegalArgumentException
Proxy.getProxyClass(loader, interfaces). getConstructor(new Class[] { InvocationHandler.class }). newInstance(new Object[] { handler });
Proxy.getProxyClass
ÀÇ °æ¿ì¿Í °°Àº ÀÌÀ¯·Î½á,Proxy.newProxyInstance
´Â IllegalArgumentException
¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.
loader
- ÇÁ·Ï½Ã Ŭ·¡½º¸¦ Á¤ÀÇÇϴ Ŭ·¡½º ·Î´õinterfaces
- ÇÁ·Ï½Ã Ŭ·¡½º°¡ ±¸ÇöÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÇ ¸®½ºÆ®h
- ¸Þ¼Òµå È£ÃâÀÇ µð½ºÆÌġóÀÇ È£Ãâ Çڵ鷯
IllegalArgumentException
- getProxyClass
¿¡ ÀεµÇØÁö´Â ÆÄ¶ó¹ÌÅÍ¿¡ °üÇÑ Á¦¾àÀÇ ¾î¶² °ÍÀΰ¡°¡ ÁöÄÑÁú ¼ö ¾ø¾ú´ø °æ¿ì
NullPointerException
- interfaces
¹è¿ÀÇ Àμö ¶Ç´Â ±× ¿ä¼ÒÀÇ ¾î¶² °ÍÀΰ¡°¡ null
ÀÇ °æ¿ì, ¶Ç´Â È£ÃâÇØ Çڵ鷯 h
°¡ null
ÀÇ °æ¿ìpublic static boolean isProxyClass(Class cl)
getProxyClass
¸Þ¼Òµå ¶Ç´Â newProxyInstance
¸Þ¼Òµå¸¦ »ç¿ëÇØ µ¿ÀûÀ¸·Î »ý¼ºµÇ¾î ÇÁ·Ï½Ã Ŭ·¡½º°¡ µÇ´Â °æ¿ì¿¡¸¸, true ¸¦ µ¹·ÁÁÝ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ ½Å·Ú¼ºÀº ÀÌ ¸Þ¼Òµå¿¡ ÀÇÇØ ½ÃÅ¥·¯Æ¼ º¸È£¸¦ ÇÒ ¼ö ÀÖÀ»Áö ¾î¶³Áö¸¦ °áÁ¤ÇÒ ¶§¿¡ Áß¿äÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡, ÇØ´ç Ŭ·¡½º°¡ Proxy
¸¦ È®ÀåÇÒÁö ¾î¶³Áö¸¦ ÀÌ ¸Þ¼ÒµåÀÇ ±¸ÇöÀ¸·Î Å×½ºÆ®ÇÏ´Â °Í ¸¸À¸·Î´Â ÃæºÐÇÏ´Ù°í´Â ¸»ÇÒ ¼ö ¾ø½À´Ï´Ù.
cl
- Å×½ºÆ®Çϴ Ŭ·¡½º
true
, ±×·¸Áö ¾ÊÀº °æ¿ì´Â false
NullPointerException
- cl
°¡ null
ÀÇ °æ¿ìpublic static InvocationHandler getInvocationHandler(Object proxy) throws IllegalArgumentException
proxy
- È£Ãâ Çڵ鷯¸¦ µ¹·ÁÁÖ´Â ÇÁ·Ï½Ã ÀνºÅϽº
IllegalArgumentException
- Àμö°¡ ÇÁ·Ï½Ã ÀνºÅϽº°¡ ¾Æ´Ñ °æ¿ì
|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
ÀüÀÇ Å¬·¡½º ´ÙÀ½ÀÇ Å¬·¡½º | ÇÁ·¹ÀÓ ÀÖ¾î ÇÁ·¹ÀÓ ¾øÀ½ | ||||||||||
°³¿ä: »óÀÚ | Çʵå | constructor | ¸Þ¼Òµå | »ó¼¼: Çʵå | constructor | ¸Þ¼Òµå |
Java, Java 2 D, ¹× JDBC ´Â ¹Ì±¹ ¹× ±× ¿ÜÀÇ ³ª¶ó¿¡ ÀÖ¾î¼ÀÇ ¹Ì±¹ Sun Microsystems, Inc. ÀÇ »óÇ¥ ȤÀº µî·Ï»óÇ¥ÀÔ´Ï´Ù.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.