小编Chr*_*nos的帖子

我想打印 hi GrandFather;但它似乎打印 hifather

我要打印 hi GrandFather

但它似乎打印喜父亲。我不明白如何区分findSpecialfindVirtual

我想要有人可以帮助我。谢谢

class GrandFather{
    void thinking(){
        System.out.println("hi GrandFather");

    }
}
class Father extends GrandFather{
    void thinking(){
        System.out.println("hi Father");
    }
}
class Son extends Father{
    void thinking(){
            MethodType mt=MethodType.methodType(void.class);

            //MethodHandle mh=MethodHandles.lookup().findVirtual(GrandFather.class,"thinking",mt).bindTo(this);
            MethodHandle mh;
                mh = MethodHandles.lookup().findSpecial(GrandFather.class,"thinking",mt,getClass());
                mh.invoke(this);
    }
}
public static void main(String[] args){
    (new MethodHandleTest().new Son()).thinking();
}
Run Code Online (Sandbox Code Playgroud)

控制台屏幕截图显示打印了“嗨父亲”

java jvm invoke java-8 methodhandle

5
推荐指数
1
解决办法
157
查看次数

标签 统计

invoke ×1

java ×1

java-8 ×1

jvm ×1

methodhandle ×1