我探索在Java引入了8Java8使用界面的默認方法枚舉值
我已經有2個默認的方法是做構建命令的接口,我跑靜態和默認方法的可能性服務器通過ssh遠程執行一些簡單的任務。移動鼠標需要2個參數:鼠標的x和y位置。
public interface Robot {
default String moveMouse(int x, int y) {
return constructCmd("java -jar move_mouse.jar " + x + " " + y);
}
default String clickLeft() {
return constructCmd("java -jar click_left.jar");
}
static String constructCmd(String cmd) {
return "export DISPLAY=:1.0\n" +
"cd Desktop\n" +
cmd;
}
}
我有多個枚舉值與預設的,我可以全部枚舉有效地結合成一個,並且不使用界面什麼那麼,然而該枚舉將包含價值數百或數千,我想保留它有點舉辦,所以我已經在多個枚舉中分裂了。
我想要所有的枚舉共享相同的方法,所以我想我會給一個接口的默認方法一槍。
public enum Field implements Robot {
AGE_FIELD(778, 232),
NAME_FIELD(662, 280);
public int x;
public int y;
Field(int x, int y) {
this.x = x;
this.y = y;
}
}
這樣我就可以得到字符串命令是:
Field.AGE_FIELD.clickLeft();
Field.AGE_FIELD.moveMouse(Field.AGE_FIELD.x, Field.AGE_FIELD.y);
然而moveMouse看起來真的對我不好,我覺得應該是在某種程度上可能默認使用枚舉的值。
任何人都有這樣的問題很好的解決方案?
這似乎是一個概念性問題。你想要的是一個與'void moveMouse()','int getMouseTargetX()'和'int getMouseTargetY()'方法的接口。您當前的設計要求提供特定的x座標和y座標。我的建議假定對象具有一些屬性,定義x座標和y座標。我的提議更像是對已有系統的擴展,而不是替代品。您的界面將用於組件實際移動鼠標,而我的界面將被組件使用,這些組件會調用實際移動鼠標的組件。 – Turing85