JVM知道函数指针是什么吗?

时间:2015-06-30 06:08:46

标签: java

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

  

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

这是什么意思?我猜想每次我们创建这样一个类的对象时,我们都会在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?
}

1 个答案:

答案 0 :(得分:3)

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