bytecode

    3热度

    1回答

    我对以下段落感到困惑(来源Oracle JVM specification for invokespecial instruction)。 如果以下所有条件都为真,令C的 当前类的直接超类: 的解决方法是不是一个实例初始化方法(§2.9)。 如果符号引用命名一个类(不是接口),那么该类是当前类的超类。 ACC_SUPER标志设置为类文件(§4.1)。在invokespecial指令描述第一段: 我

    2热度

    2回答

    Groovy可以访问Java类的私有方法和变量。 Groovy如何在现场做这件事?是否因为使用invokedynamic字节码指令而被MethodHandle类使用?我认为Java使用invokespecial指令呼叫private方法和invokevirtual为public权利,尊重访问修饰符?

    1热度

    1回答

    我想在运行时使用ByteBuddyAgent注释默认方法。为了保持默认实现,我正在使用重定位策略,但我无法弄清楚如何通过调用原始方法来拦截新方法。 我试过使用MethodCall.invokeSuper()和MethodCall.invokeSelf().onDefault(),但都给我一个IllegalStateException。 new ByteBuddy() .subclass(MyIn

    0热度

    1回答

    我有一个Java 8项目,它在运行时使用Javassist 3.20.0-GA通过自定义Java代理重写字节码。我们的目标是测试方法,以便通过带有打印语句的try/finally块来包装原始主体。例如,给定此琐碎方法: public class TimeService { public long getCurrentTime(){ long time = 0;

    3热度

    1回答

    内部类在我的代码,我有这样的事情: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) presenter.onCreate() fabContainer.onClick { presenter.onLoginButtonC

    1热度

    1回答

    我反转了一个android应用程序。在阅读时,我看到一些使用变量的方法,如p1或p2 ......我不知道我可以在哪里引用这些变量。例如: .method public b(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V .locals 1 invoke-static {}, Lpnf/this/obje

    0热度

    2回答

    我使用“javap -verbose”来解析类文件并找到丢失的常量池#3,有人可以告诉我原因吗?

    1热度

    1回答

    我试图让CGLIB的字节码的增强对象使用BCEL这样: package app; import cglib.MyInterceptor; import net.sf.cglib.proxy.Enhancer; import org.apache.bcel.Repository; import org.apache.bcel.classfile.JavaClass; import org

    -1热度

    1回答

    这是我第一次使用Javassist,我创建了一个使用javassist的类,并且我添加了一些方法,现在我想知道如何将它与JVM。这里是我写的代码: package up.coo.tp10; import java.io.DataOutputStream; import java.io.FileOutputStream; import javassist.CannotCompileExce

    -1热度

    1回答

    我一直在做一些关于Java字节码的个人研究,并且遇到了一些奇怪之处。如果我反编译this class,我发现参考Class.forName()挂在常量池中。但是,源代码中没有提及此方法。 我认为这段代码会导致javac发出一些动态加载类的代码,但我不知道为什么会发生这种情况。它让我觉得效率低下,但主要是我很好奇为什么会发生这种情况。