从和对象类型对象获取更多信息

时间:2014-12-06 19:50:08

标签: java override

@Override
void func(Object obj){
    obj.foo();   // <---- Is it possible to call foo() method?
                 // Suppose I can guarantee always passing an object which has foo() method
}

我无法将功能更改为

void func(SomeClass obj)

因为我正在覆盖一种方法。

2 个答案:

答案 0 :(得分:1)

这将导致语法错误,因为Object未定义方法foo()。但是,如果您确定要传递的参数实际上是SomeClass实例,则可以转换参数:

@Override
void func(Object obj){
    ((SomeClass) obj).foo();
}

答案 1 :(得分:0)

两种方法 -

i)拥有&#34; instanceOf&#34;检查然后向下转发并调用Mureinik提到的方法。

ii)对救援的反思 -

            Method method = obj.getClass().getMethod("foo",new Class[]{});
            method.invoke(obj, null);