我有一个抽象类来创建工具(例如插画笔,选区等)。
想法是用户可以根据需要轻松创建新工具。
一些工具具有称为“ draggingSelection”的方法。
我想知道是否有一种方法可以检查类是否具有该对象,如果可以,请运行它。
(在这种情况下,draggingSelection返回一个布尔值)
到目前为止,我可以弄清楚该方法是否存在。
我只能让它无法运行该方法。
我尝试使用invoke进行操作,但失败了。我的方法不返回任何参数。
可以帮忙。
public boolean draggingSelection() {
Method[] meths = activeTool.getClass().getMethods();
for (int i = 0; i < meths.length; i++) {
if (meths[i].getName().equals("draggingSelection")) {
// how can i run it?
//return meths[i].draggingSelection(); // wrong
}
}
return false;
}
最佳答案
public interface Draggable {
public boolean draggingSelection(int foo, int bar);
}
然后,当您使用此方法创建一个类时,只需添加
implements Draggable
。例:public class Selection implements Draggable {
public boolean draggingSelection(int foo, int bar) {
(insert code here)
return baz;
}
(insert rest of code here)
}
因此,您的示例将是:
if (activeTool instanceof Draggable) {
((Draggable)activeTool).draggingSelection(foo, bar);
}