当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

TODAY Method Invoker

Java 字节码级别方法调用
授权协议 GPL
开发语言 Java
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 楚奇逸
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

TODAY Method Invoker 是一个 Java 字节码级别方法调用。

使用说明

public class TestHandlerInvoker {

	public static void main(String[] args) throws Exception {

        System.setProperty("cglib.debugLocation", "D:/debug");
        {
            final Method main = Bean.class.getDeclaredMethod("main");
            final Invoker mainInvoker = MethodInvokerCreator.create(main);
            mainInvoker.invoke(null, null);
        }
        {
            final Method test = Bean.class.getDeclaredMethod("test", short.class);
            final Invoker mainInvoker = MethodInvokerCreator.create(test);
            mainInvoker.invoke(null, new Object[] { (short) 1 });
        }

        final Invoker create = MethodInvokerCreator.create(Bean.class, "test");
        create.invoke(new Bean(), null);
        final Invoker itself = MethodInvokerCreator.create(Bean.class, "test", Bean.class);
        itself.invoke(new Bean(), new Object[] { new Bean() });
    }

    public static class Bean {

        public static void test(short i) throws Throwable {
            System.err.println("static main " + i);
        }

        protected static void main() throws Throwable {
            System.err.println("static main");
        }

        public void test() throws Throwable {
            System.err.println("instance test");
        }

        void test(Bean itself) {
            System.err.println("instance test :" + itself);
        }
    }
}

 

 相关资料
  • 为了使之具体化,请考虑下面的示例,在这里我需要查找所有名称中包含“fish”一词的鱼,然后将每个匹配的鱼的第一个字母大写。(是的,我知道哈格鱼不是真的鱼,但我没有匹配的鱼名了。) 对于这两种方法在字节码级别的本质上可能存在的差异,您可能有的任何洞察力都是很好的。一些实际的字节代码就更好了。

  • 除了基本的读写操作, ByteBuf 还提供了它所包含的数据的修改方法。 随机访问索引 ByteBuf 使用zero-based 的 indexing(从0开始的索引),第一个字节的索引是 0,最后一个字节的索引是 ByteBuf 的 capacity - 1,下面代码是遍历 ByteBuf 的所有字节: Listing 5.6 Access data ByteBuf buffer = ...;

  • 问题内容: 我现在专注于需要深入了解Java字节码的项目。 借助于bcel,我现在可以完成大部分工作。我现在不清楚的一点是如何识别子类方法覆盖其基本代码?文件中是否记录了与方法相关联的任何属性,表明该重写关系,或者我应该返回其基类可以比较方法签名吗? 任何提示将不胜感激。 问题答案: 您需要查找层次结构链-字节码中没有任何内容表明它是被重写的方法,因为不需要。

  • 我有两个组成部分: 父组件 子组件 我试图从Parent调用child的方法,我尝试了这种方法,但无法得到结果: 有没有办法从父级调用子级的方法? 注意:子组件和父组件在两个不同的文件中。

  • 问题内容: 我有两个组成部分。 父组件 子组件 我试图从父级调用孩子的方法,我尝试过这种方法,但没有得到结果 有没有一种方法可以从父级调用子级的方法? 注意:子组件和父组件位于两个不同的文件中 问题答案: 首先,让我表示,这通常 不是 在React领域中解决问题的方法。通常,您要做的是将功能传递给道具中的子代,并传递事件中的子代的通知(或者更好的是:)。 但是,如果 必须 在子组件上公开命令式方法

  • 本文向大家介绍字节码和机器码的区别相关面试题,主要包含被问及字节码和机器码的区别时的应答技巧和注意事项,需要的朋友参考一下 机器码,学名机器语言指令,有时也被称为原生码,是电脑的CPU可直接解读的数据。 字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。 -----------      

  • 问题内容: 我有两个组成部分。 父组件 子组件 我试图从父级调用孩子的方法,我尝试过这种方法,但没有得到结果 有没有一种方法可以从父级调用子级的方法? 注意:子组件和父组件位于两个不同的文件中 问题答案: 首先,让我表示,这通常不是在React领域中解决问题的方法。通常,您要做的是在props中将功能传递给子级,并在事件中传递子级的通知(或者更好的是:)。 但是,如果必须在子组件上公开命令式方法,

  • 问题内容: 我试图弄清方法的字节码大小,因为我想确保它足够小,可以被编译器优化内联。 我看到内联方法的默认最大大小为35,因此,如果该方法大于此,我将修改代码或将其分成多个方法。 我有一种生成下面的字节码的方法(通过IntelliJ IDEA的ASM字节码大纲插件分解)。 我如何知道该方法的字节码大小?LINENUMBER似乎引用了原始源代码的行号。 TIA 问题答案: 我如何知道该方法的字节码大