@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)
因为我正在覆盖一种方法。
答案 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);