JavaTM 2 Platform
Standard Ed. 5.0

java.lang.instrument
ÀÎÅÍÆäÀ̽º ClassFileTransformer


public interface ClassFileTransformer

Ŭ·¡½º ÆÄÀÏÀ» º¯È¯Çϱâ À§Çؼ­ ÀÌ ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀ» Á¦°øÇÏ´Â ¿¡ÀÌÀüÆ®. º¯È¯Àº JVM¿¡ ÀÇÇØ Å¬·¡½º°¡ Á¤ÀǵDZâ Àü¿¡ ¹ß»ýÇÕ´Ï´Ù.

¡¸Å¬·¡½º ÆÄÀÏ¡¹À̶ó°í ÇÏ´Â ¿ë¾î´Â ¡¸Java °¡»ó ¸Ó½Å »ç¾ç¡¹ÀÇ ¡¸The class File Format¡¹ÀÇ ÀåÀÇ Á¤ÀÇ¿¡ µû¶ó »ç¿ëµÇ¾î ¹ÙÀÌÆ® ¼ø¼­°¡ ÆÄÀÏ¿¡ Á¸ÀçÇÒÁö ¾î¶³Áö¿¡ °ü°è¾øÀÌ, Ŭ·¡½º ÆÄÀÏ Çü½ÄÀÇ ¹ÙÀÌÆ® ¼ø¼­¸¦ÀǹÌÇÕ´Ï´Ù.

µµÀÔµÈ ¹öÀü :
JDK1. 5
°ü·Ã Ç׸ñ:
Instrumentation, Instrumentation.addTransformer(java.lang.instrument.ClassFileTransformer), Instrumentation.removeTransformer(java.lang.instrument.ClassFileTransformer)

¸Þ¼­µå °³¿ä
 byte[] transform (ClassLoader  loader, String  className, Class <? > classBeingRedefined, ProtectionDomain  protectionDomain, byte[] classfileBuffer)
          ÀÌ ¸Þ¼­µåÀÇ ±¸ÇöÀº Á¦°øµÈ Ŭ·¡½º ÆÄÀÏÀ» º¯È¯ÇØ, »õ·Î¿î ġȯ Ŭ·¡½º ÆÄÀÏÀ» µ¹·ÁÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù.
 

¸Þ¼­µåÀÇ »ó¼¼

transform

byte[] transform(ClassLoader  loader,
                 String  className,
                 Class <? > classBeingRedefined,
                 ProtectionDomain  protectionDomain,
                 byte[] classfileBuffer)
                 throws IllegalClassFormatException 
ÀÌ ¸Þ¼­µåÀÇ ±¸ÇöÀº Á¦°øµÈ Ŭ·¡½º ÆÄÀÏÀ» º¯È¯ÇØ, »õ·Î¿î ġȯ Ŭ·¡½º ÆÄÀÏÀ» µ¹·ÁÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù.

Æ®·£½º Æ÷¸Ó°¡ Instrumentation.addTransformer ·Î µî·ÏµÇ¸é, Æ®·£½º Æ÷¸Ó´Â »õ·Î¿î Ŭ·¡½º Á¤ÀÇ¿Í Å¬·¡½ºÀçÁ¤ÀǸ¶´Ù È£ÃâÇÕ´Ï´Ù. »õ·Î¿î Ŭ·¡½º Á¤ÀÇÀÇ ¿ä±¸´Â ClassLoader.defineClass¸¦ »ç¿ëÇØ ÇàÇØÁý´Ï´Ù. Ŭ·¡½ºÀçÁ¤ÀÇÀÇ ¿ä±¸´Â Instrumentation.redefineClasses ¶Ç´Â ÀÌ ³×ÀÌƼºêÀÇ µ¿µîÀÇ °ÍÀ» »ç¿ëÇØ ÇàÇØÁý´Ï´Ù. Æ®·£½º Æ÷¸Ó´Â Ŭ·¡½º ÆÄÀÏ ¹ÙÀÌÆ®°¡ È®ÀÎ ¶Ç´Â Àû¿ëµÇ±â Àü¿¡ ¿ä±¸ÀÇ Ã³¸®Áß¿¡ È£ÃâÇÕ´Ï´Ù.

±¸ÇöÇÏ°í ÀÖ´Â ¸Þ¼­µå°¡ º¯È¯ ºÒ¿ä·Î ÆÇÁ¤Çϸé, ¸Þ¼­µå´Â nullÀ» ¸®ÅÏÇÕ´Ï´Ù. º¯È¯ÀÌ ÇÊ¿ä·Î ÆÇÁ¤Çϸé, ¸Þ¼­µå´Â »õ·Î¿î byte[] ¹è¿­À» ÀÛ¼ºÇØ, ¸ðµç ÇÊ¿äÇÑ º¯È¯°ú ÇÔ²² classfileBuffer ÀÔ·ÂÀ» ±× ¹è¿­¾È¿¡ º¹»çÇØ, »õ·Î¿î ¹è¿­À» ¸®ÅÏÇÕ´Ï´Ù. classfileBuffer ÀÔ·ÂÀº º¯°æµÇÁö ¾Ê½À´Ï´Ù.

ÀçÁ¤ÀÇÀÇ ÄÉÀ̽º¿¡¼­´Â Æ®·£½º Æ÷¸Ó´Â ÀçÁ¤ÀÇ ½Ã¸àƽ½º¸¦ Áö¿ø ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Ãʱâ Á¤ÀÇÁß¿¡ Æ®·£½º Æ÷¸Ó°¡ º¯°æÇÑ Å¬·¡½º°¡ ³ªÁß¿¡ ÀçÁ¤ÀǵǴ °æ¿ì, Æ®·£½º Æ÷¸Ó´Â 2¹ø°ÀÇ Å¬·¡½ºÀÇ Ãâ·Â Ŭ·¡½º ÆÄÀÏ·Î ÃÖÃÊÀÇ Ãâ·Â Ŭ·¡½º ÆÄÀÏÀÌ Á¤´çÇÏ°Ô ÀçÁ¤Àǵǰí ÀÖ´Â °ÍÀ» È®ÀÎÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

classFileBuffer°¡ À¯È¿ÇÏ°Ô Æ÷¸ËµÈ Ŭ·¡½º ÆÄÀÏÀ» ³ªÅ¸³»Áö ¾ÊÀ¸¸é Æ®·£½º Æ÷¸Ó°¡ ÆÇÁ¤ÇßÀ» °æ¿ì, Æ®·£½º Æ÷¸Ó´Â IllegalClassFormatExceptionÀ» Throw ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ±× ÀÌÈĵµ, Æ®·£½º Æ÷¸Ó´Â ºÒ·Á°¡ ·Îµå³ª ÀçÁ¤ÀÇ°¡ ½ÃÇàµË´Ï´Ù. IllegalClassFormatExceptionÀ» Throw ÇÏ´Â °ÍÀº nullÀ» µ¹·ÁÁÖ´Â °Í°ú °°Àº È¿°ú°¡ ÀÖ½À´Ï´Ù¸¸, Çü½Ä¿¡ ¹Ìºñ°¡ ÀÖ´Â ·Î±×ÀÇ ÀÛ¼ºÀ̳ª µð¹ö±×¸¦ ¿ëÀÌÇÏ°Ô ÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
loader - º¯È¯µÇ´Â Ŭ·¡½º¸¦ Á¤ÀÇÇÏ°í ÀÖ´Â ·Î´õ. bootstrap loaderÀÇ °æ¿ì´Â null
className - ¡¸Java °¡»ó ¸Ó½Å »ç¾ç¡¹À¸·Î Á¤Àǵǰí ÀÖ´Â ¿ÏÀü ¼ö½Ä Ŭ·¡½ºÀÇ ³»ºÎ Çü½ÄÀÇ Å¬·¡½º¸í°ú ÀÎÅÍÆäÀ̽º¸í. ¿¹¸¦ µé¾î, "java/util/List"
classBeingRedefined - ÀçÁ¤ÀÇÀÇ °æ¿ì´Â ÀçÁ¤Àǵǰí Àִ Ŭ·¡½º, ±×·¸Áö ¾ÊÀº °æ¿ì´Â null
protectionDomain - Á¤ÀÇ ¶Ç´Â ÀçÁ¤Àǵǰí Àִ Ŭ·¡½ºÀÇ º¸È£ ¿µ¿ª
classfileBuffer - Ŭ·¡½º ÆÄÀÏ Çü½ÄÀÇ ÀÔ·Â ¹ÙÀÌÆ® ¹öÆÛ (º¯°æµÇ¾î¼­´Â ¾È µÈ´Ù)
¹Ýȯ°ª:
Á¤Çü½ÄÀÇ Å¬·¡½º ÆÄÀÏ ¹öÆÛ (º¯È¯ÀÇ °á°ú), º¯È¯µÇÁö ¾Ê¾Ò´ø °æ¿ì´Â null
¿¹¿Ü:
IllegalClassFormatException - ÀÔ·ÂÀÌ Á¤Çü½ÄÀÇ Å¬·¡½º ÆÄÀÏÀ» ³ªÅ¸³»Áö ¾Ê´Â °æ¿ì
°ü·Ã Ç׸ñ:
Instrumentation.redefineClasses(java.lang.instrument.ClassDefinition[])

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.