|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
| °³¿ä: NESTED | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | |||||||||
java.lang.Objectjava.lang.reflect.Proxy
public class Proxy
Proxy´Â
µ¿Àû ÇÁ·Ï½ÃÀÇ Å¬·¡½º ¹× ÀνºÅϽº¸¦ »ý¼ºÇÏ´Â static ¸Þ¼µå¸¦ Á¦°øÇØ, ¶Ç, ±×·¯ÇÑ ¸Þ¼µå¿¡ ÀÇÇØ »ý¼ºµÈ µ¿Àû ÇÁ·Ï½Ã Ŭ·¡½º ¸ðµç ½´ÆÛ Ŭ·¡½ºÀ̱⵵ ÇÕ´Ï´Ù.
ÀÎÅÍÆäÀ̽º 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¡¹·Î ½ÃÀ۵Ǵ Ŭ·¡½º¸íÀÇ ¿µ¿ªÀ» ÇÁ·Ï½Ã Ŭ·¡½º¸¦ À§Çؼ È®º¸ÇØ µÑ Çʿ䰡 ÀÖ´Ù
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 »ý¼ºÀÚ°¡ ÀÖ´Ù. ¸®Ç÷º¼Ç API¸¦ »ç¿ëÇØ public »ý¼ºÀÚ¿¡ ¾×¼¼½º ÇÏ´Â °Í ¿Ü¿¡
Proxy.newInstance ¸Þ¼µå¸¦ È£ÃâÇØ ÇÁ·Ï½Ã ÀνºÅϽº¸¦ »ý¼ºÇÒ ¼öµµ ÀÖ´Ù. ÀÌ ¸Þ¼µå´Â Proxy.getProxyClass
È£Ãâ µ¿ÀÛÀ» È£Ãâ Çڵ鷯¸¦ °¡Áö´Â »ý¼ºÀÚ È£Ãâ°ú °áÇÕÇÑ´Ù
ÇÁ·Ï½Ã ÀνºÅϽº¿¡´Â ¾Æ·¡ÀÇ ÇÁ·ÎÆÛƼ°¡ ÀÖ½À´Ï´Ù.
Foo°¡ ÇÁ·Ï½Ã ÀνºÅϽº proxy ¹× ÀÎÅÍÆäÀ̽ºÀÇ 1°³¸¦ ±¸ÇöÇϰí ÀÖ´Â °æ¿ì, ´ÙÀ½ÀÇ ½ÄÀÌ true¸¦ µ¹·ÁÁØ´Ù
proxy instanceof Foo
¶Ç, ´ÙÀ½ÀÇ Ä³½ºÆ® Á¶ÀÛÀÌ ¼º°øÇÑ´Ù (ClassCastException´Â Throw µÇÁö ¾Ê´Â´Ù)
(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°³¿¡ ÇÒ´çÇÏ°í °¡´ÉÇÑ È®ÀÎÀÌ ³¡³ ¿¹¿Ü ŸÀÔ¸¸À» Throw ÇÒ ¼ö ÀÖ½À´Ï´Ù. invoke ¸Þ¼µå°¡ È£Ãâ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·Ï½Ã ÀÎÅÍÆäÀ̽ºÀÇ 1°³ÀÇ ¸Þ¼µå·Î ¼±¾ðµÈ ¿¹¿Ü ŸÀÔÀÇ ¾î´À °Í¿¡µµ ÇÒ´çÇϰí ÇÒ ¼ö ¾ø´Â È®ÀÎÀÌ ³¡³ ¿¹¿Ü¸¦ Throw ÇßÀ» °æ¿ì, È®ÀεǾî ÀÖÁö ¾ÊÀº 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°³ÀÇ °³º°ÀÇ ÇÁ·Ï½Ã Ŭ·¡½º°¡ µË´Ï´Ù.
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À»
Throw ÇÕ´Ï´Ù.
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 Standard Ed. 5.0 |
|||||||||
| ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
| °³¿ä: NESTED | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.