【问题标题】:Does JVM know what function pointers are?JVM 知道函数指针是什么吗?
【发布时间】:2015-06-30 06:08:45
【问题描述】:

我正在阅读 J. Bloch 的有效 java,现在我正在使用函数对象项。他说:

Java不提供函数指针,但对象引用可以 用来达到类似的效果。在对象上调用方法 通常对该对象执行一些操作。然而,它是 可以定义一个对象,其方法对其他对象执行操作 对象,显式传递给方法。一个类的实例 只导出一个这样的方法实际上是一个指向该方法的指针 方法。

这是什么意思?我猜每次我们创建这样一个类的对象时,我们都会在内部有效地在JVM 中获得一个函数指针。但我不确定,因为 Java 本身不知道函数指针的概念。

换句话说,我们是否只有编译器对此类对象执行的优化?

例子:

public interface Callback{
     public void invoke();
}

public class GenericCallback implements Callback{
     public void invoke(){ System.out.println("Generic callback"); }
}

public static void main(String[] args){
    Callback c = new GenericCallback(); //What kind of optimization will 
                                        //be performed for the c object?
}

【问题讨论】:

标签: java


【解决方案1】:

函数指针是 Java 所没有的语言级结构。由于语言和字节码都支持函数指针,因此它们没有相关的级别(因为本机代码也没有它们的概念)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 2021-08-25
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2016-02-03
    • 2011-05-19
    相关资源
    最近更新 更多