gpt4 book ai didi

java - JVM不需要所有的接口(interface)方法都实现吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:30 34 4
gpt4 key购买 nike

我正在尝试 groovy,所以我在 groovy 中编写了一个示例 HelloWorld 程序并编译它并运行它工作正常,当我看到使用 JAD 反编译器编译的代码时,我的 HelloWorld 程序实现了一个 GroovyObject 接口(interface),但它没有实现所有的该接口(interface)中的方法,因此这意味着只有 java 编译器强制我们实现接口(interface)中的所有方法,但 JVM 不需要。我说得对吗?

这是反编译的 groovy 代码:

import groovy.lang.GroovyObject;
import groovy.lang.MetaClass;
import org.codehaus.groovy.runtime.callsite.CallSite;

public class Helloworld_1 implements GroovyObject {
public Helloworld_1() {
Helloworld_1 this;
CallSite[] arrayOfCallSite = $getCallSiteArray();
MetaClass localMetaClass = $getStaticMetaClass();
this.metaClass = localMetaClass; }

public static void main(String... args){
CallSite[] arrayOfCallSite = $getCallSiteArray();
arrayOfCallSite[0].callStatic(Helloworld_1.class, "Hello World");
}
static {}
}

任何人请帮助....

最佳答案

在使用 Groovy 控制台时,我可以看到 GroovyObject 的实现。为了显示生成的源代码,我选择了ScriptInspect Ast,并为At end of Phase选择了Class Generation>。我还可以通过选择 Bytecode 选项卡查看生成的字节码。

我相信负责实现 GroovyObject 方法的源代码在 org.codehaus.groovy.classgen.Verifier 中。有一个名为 addGroovyObjectInterfaceAndMethods() 的方法。您可以在 https://github.com/groovy/groovy-core/blob/master/src/main/org/codehaus/groovy/classgen/Verifier.java#L310 中找到源代码.

关于java - JVM不需要所有的接口(interface)方法都实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22270266/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com