我有一个抽象类来创建工具(例如插画笔,选区等)。
想法是用户可以根据需要轻松创建新工具。

一些工具具有称为“ 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);
}

10-06 11:22