デリゲートは .NET のものとは少し異なるため、Java でのアプローチに関するアドバイスが必要です。同じ名前と同じメソッド名を持ついくつかのインターフェイスを作成したいと思いますが、それらが異なるのはパラメーターの数だけです。.NETのアクションのようなもの
いくつかのコード サンプル。
今のところ機能するのは、このように実装された抽象クラスです。
public abstract class AbstractValidators {
public <T1> boolean isValid(T1 t1) {
return false;
}
public <T1,T2> boolean isValid(T1 t1, T2 t2) {
return false;
}
//And so one
}
次に、いくつかのクラスで、このようなことを行うことができます。
public class SomeClass {
AbstractValidators validateStrVsInter = new AbstractValidators() {
public <String,Integer> boolean isValid(String t1, Integer t2) { //Don't be fool by colors the String and Integer are only names of generic parameters
return true;
}
};
public void doStaff() {
this.validateStrVsInter.<String,Integer>isValid("String", 100); // return true;
}
}
それはうまくいきますが、私が必要とするのは、1つに割り当てることができるさまざまなインターフェースのようなものです..
public interface IValidator<T1> {
public boolean isValid(T1 t);
}
public interface IValidator<T1,T2> {
public boolean isValid(T1 t, T2 t2);
}
いくつかのアイデア?
編集:
目標は何ですか?
定義を変更する可能性があるのは非常に簡単です
isValid(String t1, Integer t2) { }
の中へ
isValid(String t1, Integer t2, Double t3) { }
そして呼び出しで
validator.isValid("1",2);
に
validator.isValid("1",2, 3.0);
クラスのインポートなどを変更せずに