在Java中 所有的函数都是后期绑定(在执行期中函数的调用会找到函数的本体)的 唯独以final声明的函数不是后期绑定  我感觉应该是前期绑定(在编译,连接中函数的调用就已经找到了函数的本体)的  所以final函数执行起来高效
   今天看书学习final   把自己的理解发出来 希望对和我一样的新手有所帮助

解决方案 »

  1.   

    final方法可以做inline处理。
    可以加快类型检查的速度。
    同样的优化还可以应用于private方法和static方法,并不是你所谓的“唯独”。
      

  2.   


        为什么会加快类型检查的速度   主要是因为final函数的前期绑定   做行内处理也是这个原因   我的观点  不知道对不对
    private方法static方法在执行时 还是要进行类型检查  而final函数在编译期间就已经做完了类型检查的工作在JAVA中确实只有final函数不是后期绑定的
      

  3.   

    这个是理论上的, 实际上一般的IDE比如eclipse有编译选项的。 针对final会让你选择以inline的方式编译还是怎样编译, 默认不是inline的。
    你可以去找找。
      

  4.   

    是否inline是jit编译器处理的吧?
      

  5.   

    不知道为什么这么说呢?
    难道private的和static的会放到后期去帮定吗?
    编译的时候都直接直接invokespecial和invokestatic指令了。
      

  6.   

    将方法声明为final那有两个原因,第一就是说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。第二就是允许编译器将所有对此方法的调用转化为inline(行内)调用的机制,它会使你在调用final方法时,直接将方法主体插入到调用处,而不是进行例行的方法调用,例如保存断点,压栈等,这样可能会使你的程序效率有所提高,然而当你的方法主体非常庞大时,或你在多处调用此方法,那么你的调用主体代码便会迅速膨胀,可能反而会影响效率,所以你要慎用final进行方法定义
      

  7.   

    final方法可以继承吗?貌似不可以吧
      

  8.   

    类似于inline<------------------------------------------->
    JAVA免费开源论坛http://www.jsprun.net