Does Java support dynamic method invocation?

Posted by eSKay on Stack Overflow See other posts from Stack Overflow or by eSKay
Published on 2010-04-09T16:41:32Z Indexed on 2010/04/09 16:53 UTC
Read the original article Hit count: 620

Filed under:
|
|
|
class A           { void F() { System.out.println("a"); }}
class B extends A { void F() { System.out.println("b"); }}

public class X {
    public static void main(String[] args) {
        A objA = new B();
        objA.F();
    }
}

Here, F() is being invoked dynamically, isn't it?

This article says

... the Java bytecode doesn’t support dynamic method invocation. There are three supported invocations modes : invokestatic, invokespecial, invokeinterface or invokevirtual. These modes allows to call methods with known signature. We talk of strongly typed language. This allows to to make some checks directly at compile time.

On the other side, the dynamic languages use dynamic types. So we can call a method unknown at the compile time, but that’s completely impossible with the Java bytecode.

What am I missing?

© Stack Overflow or respective owner

Related posts about java

Related posts about dynamic