假设我有这样一个界面,
interface MyIntf{
void generate();
}
和下面的方法
void run(Myintf x) {
x.generate();
}
我可以使用实现 MyIntf 的类的对象调用 run()。
但在 Java 中是否可以在没有显式接口(interface)名称的情况下声明运行。
即我可以像这样指定 run() 吗?
void run("Some object which has a method called 'void generate()'" x){
x.generate();
}
和 run() 可以用任何类的对象调用,该类的方法称为
void generate();
最佳答案
然后你必须使用反射来做你想做的事。像这样的东西:
void run(Object o) {
Method m = o.getClass().getMethod("generate", new Class[0]);
if (m!=null)
m.invoke(o, new Object[0]);
}
您还必须添加必要的 try/catch(我不太清楚),我认为您可以传递 null
而不是空数组。
关于Java:如何在不指定完整类型的情况下为函数参数指定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276455/