2010-10-27 29 views
0

我需要一些關於Java方法的建議,因爲委託與.NET不同。我希望創建一些具有相同名稱和相同方法名稱的接口,但只有不同的參數是參數的數量。類似於.NET中的ActionsJava中的代表像.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; 

} 

} 

的工作,但不是很好的解決方案恕我直言,我需要的是類似的東西可能會被分配到一個不同的interafaces ..

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); 

不改變類導入等

回答

0

你知道你可以創建一個接口實現多個其他接口,基本上加入他們?

+0

是的。但後來我被迫實施每一種方法,而不是特定的方法。我想選擇一個執行器並對其執行操作。 – 2010-10-27 14:45:11

+0

然後按照Swing的步驟進行操作,併爲每種方法制作一個適用於空實現的適配器。然後你只需重寫你需要的那個。 – 2010-10-27 15:17:04

0

在接口的實現中使用包名。

public class interfaces implements package.a.IValidator, package.b.IValidator 
相關問題