0

デリゲートは .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);

クラスのインポートなどを変更せずに

4

2 に答える 2

0

基本的にそれらを結合する他の複数のインターフェースを実装するインターフェースを作成できることを知っていますか?

于 2010-10-27T14:40:16.890 に答える
0

インターフェイスの実装でパッケージ名を使用します。

public class interfaces implements package.a.IValidator, package.b.IValidator
于 2010-10-27T14:42:28.203 に答える