cglib 的 BeanCopier 使用方法 net.sf.cglib.beans.BeanCopier.Generator#generateClass 根据你给出的 clazz 得到一个特定的 BeanCopier。但是在 BeanCopier.java 的第 152 行,我认为那里有一个无用的 dup2。我自己制作的 BeanCopier 只是删除了第 152 行,其余部分与 CGLIB BeanCopier.java 相同,我的复印机仍在工作,没有任何异常或错误。有 Cglib BeanCopier.java 生成的字节码
public void copy(java.lang.Object, java.lang.Object, net.sf.cglib.core.Converter);
Code:
0: aload_2
1: checkcast #13 // class study/copierTest/B
4: aload_1
5: checkcast #15 // class study/copierTest/A
8: dup2
9: invokevirtual #19 // Method study/copierTest/A.getA:()Ljava/lang/String;
12: invokevirtual #23 // Method study/copierTest/B.setA:(Ljava/lang/String;)V
15: return
Mine Copier 只是没有 dup2 并且仍在工作。
所以,我的问题是:dup2真的没用,还是我错过了dup2有用的一些情况?</p>
PS:我不熟悉java字节码,所以如果我问一些愚蠢的问题,我很抱歉。