2013-07-19 2 views
7

Es hieß, dass invoke-virtual ruft die virtuelle Methode, während invoke-direct ist die direkte Methode.Was ist der Unterschied zwischen invoke-virtual und invoke-direct in Android

Allerdings ist mir nicht klar, was ist "virtuelle Methode" und was ist "direkte Methode"?

Mit anderen Worten, welche Art von Methode aufrufen wird invoke-virtual und welche Art wird invoke-direct sein?

Kann jemand ein konkretes Beispiel geben?

Vielen Dank im Voraus.

Antwort

17

Von http://source.android.com/devices/tech/dalvik/dex-format.html ist eine direkte Methode "beliebige von statischen, privaten oder Konstruktor".

Statische Methoden erhalten jedoch ihren eigenen invoke-static Opcode, daher wird invoke-direct für Konstruktoren und private Methoden verwendet.

+0

Der Link ist jetzt tot – Bugster

+1

Fixed the link, danke. – JesusFreke

+0

Ich glaube, der Link sollte http://source.android.com/devices/tech/dalvik/dalvik-bytecode.html sein. Sehen Sie sich den Abschnitt "invoke-kind" an. –

Verwandte Themen