Basically in programming to interfaces I need to decide to call a virtual method of an object if it exists else call a final method in the interface:

interface A
{
    static final void foo() { ... }
}

class B : A
{
    void bar() { ... }     // optional
}

class C : B
{
    void bar() { ... }     // optional
}

void main()
{
    A a = new B;  // or new C;

    // if a.bar exists call it, else call foo
// code should work independent of the classes. (there might be more)
}

The point of the code is simply to allow the class to implement bar optionally but provide default behavior with foo. I need a way to dynamically determine if bar exists and fall back on foo. This should be possible.

e.g., suppose

class B : A { }

then I would like to b.bar() to actually call A.foo() (since bar doesn't exist in b).

I guess the exist way would be to create an opDispatch and have it call foo if bar is passed. This works great and does everything I need it to except requires adding the code in the class which I can't have. Also I'm not sure how it would work with virtual methods.

I've tried using hasMember but since my object is cast to a type of Object it never works.





Reply via email to