我正在阅读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?
}
答案 0 :(得分:3)
函数指针是Java没有的语言级构造。由于语言和字节码都支持函数指针,因此没有相关的级别(因为本机代码也没有它们的概念)。