が、私は、コマンドを構築行う2つのデフォルトのメソッドを持つインターフェイスをした私は上で実行するJavaで導入された静的およびデフォルトメソッドの可能性を模索しています
サーバーをsshで実行して、いくつかの簡単なタスクをリモートで実行します。マウスを動かすには、マウスのxとyの2つの引数が必要です。
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