有四種方法調用相關的字節碼:invokestatic
,invokespecial
,invokevirtual
,invokeinterface
這裏簡單總結它們的區別。
invokestatic:
調用靜態方法invokespecial:
調用無須動態綁定的實例方法
,例如構造函數
,私有方法
,通過super關鍵字調用的超類方法
。剩下的方法屬於動態綁定的方法。invokeinterface,invokevirtual
如果動態綁定的方法是針對接口類型的引用調用的方法,那麼就使用invokeinterface
,否則調用invokevirtual