JavaTM Platform
Standard Ed. 6

java.lang.instrument
�ӿ� ClassFileTransformer


public interface ClassFileTransformer

һ���ṩ�˽ӿڵ�ʵ����ת�����ļ��Ĵ�����ת���� JVM ������֮ǰ������

ע�⣬���� The Java Virtual Machine Specification �� The class File Format һ���еĶ���ʹ���������ļ�����ָ�����ļ���ʽ��ʾ���ֽ����У�������Щ�ַ��Ƿ�פ�����ļ��С�

�����°汾��ʼ��
1.5
������
Instrumentation, Instrumentation.addTransformer(java.lang.instrument.ClassFileTransformer, boolean), 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(ClassFileTransformer,boolean) �� canRetransform ����ȷ����

��ת����ʹ�� addTransformer ע��֮��ÿ�ζ���������ض�����ʱ�������ø�ת������ÿ����ת����ʱ�������ÿ���ת��ת�����������ඨ�������ͨ�� ClassLoader.defineClass ���䱾���ȼ۷������С������ض��������ͨ�� Instrumentation.redefineClasses ���䱾���ȼ۷������С�������ת��������ͨ�� Instrumentation.retransformClasses ���䱾���ȼ۷������С�ת����������֤��Ӧ�����ļ��ֽ�֮ǰ�������������е��õġ� �����ڶ��ת����ʱ��ת������ transform ��������ɡ� Ҳ����˵��һ�� transform ���÷��ص� byte ���齫��Ϊ��һ�����õ����루ͨ�� classfileBuffer ��������

ת����������˳��Ӧ�ã�

������ת����������ò�����ת��ת��������������ǰһ��ת���Ľ������������������������ô˷�������ÿ�����ֵ������У�ת����������ע���˳����á�����ת������ Java ����� Tool �ӿ��е� ClassFileLoadHook �¼��ṩ��

��һ��ת���������루ͨ�� classfileBuffer ���������£�

���ʵ�ַ���ȷ������Ҫ����ת������Ӧ���� null��������������һ���µ� byte[] ���飬������ classfileBuffer ��ͬ������Ҫ��ת�����Ƶ����У���������������顣�����޸����� classfileBuffer��

����ת�����ض����У�ת��������֧���ض������壺���ת�����ڳ�ʼ�����ڼ���ĵ������Ժ�Ҫ��ת�����ض��壬��ôת��������ȷ���ڶ���������ļ��ǵ�һ��������ļ��ĺϷ��ض����ļ���

���ת�����׳��쳣��δ������쳣��������ת������Ȼ�������ò����أ���Ȼ�������ض������ת������ˣ��׳��쳣�뷵�� null ��Ч����ͬ����Ҫʹ��ת��������������δ�����쳣ʱ��ֹ��ϣ����������Ϊ��������ת�������� Throwable�� ���ת������Ϊ classFileBuffer ����ʾһ����Ч��ʽ�����ļ������׳� IllegalClassFormatException���������뷵�� null ��Ч����ͬ���������ڶԸ�ʽ�ٻ����м�¼����ԡ�

������
loader - ����Ҫת��������������������������������Ϊ null
className - ��ȫ�޶����ڲ���ʽ�������ƺ� The Java Virtual Machine Specification �ж���Ľӿ����ơ����磬"java/util/List"��
classBeingRedefined - ����DZ��ض������ת����������Ϊ�ض������ת�����ࣻ���������أ���Ϊ null
protectionDomain - Ҫ������ض������ı�����
classfileBuffer - ���ļ���ʽ�������ֽڻ������������޸ģ�
���أ�
һ����ʽ���õ����ļ���������ת���Ľ���������δִ��ת��,�򷵻� null��
�׳���
IllegalClassFormatException - ������벻��ʾһ����ʽ���õ����ļ�
������
Instrumentation.redefineClasses(java.lang.instrument.ClassDefinition...)

JavaTM Platform
Standard Ed. 6

�ύ��������
�йظ���� API �ο����ϺͿ�����Ա�ĵ�������� Java SE ������Ա�ĵ������ĵ���������ϸ�ġ����򿪷���Ա���������Լ�������������ﶨ�塢ʹ�ü��ɺ͹�������ʾ����

��Ȩ���� 2007 Sun Microsystems, Inc. ��������Ȩ���� ����������֤��������������ĵ����·ַ�������