J'ai besoin de quelques conseils concernant l'approche en Java, car les délégués sont légèrement différents de .NET. Je me plais à créer des interfaces qui ont le même nom et le même nom de méthode, mais la seule chose qui les différencie est le nombre de paramètres. Quelque chose comme Actions dans .NETDélégués en Java comme dans .NET
Certains exemples de code.
Ce qui fonctionne pour l'instant, c'est la classe abstraite implémentée comme ceci.
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
}
Ensuite, dans certains cours, nous pouvons faire quelque chose comme ça.
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;
}
}
Ce travail, mais n'est pas belle solution à mon humble avis ce que j'ai besoin est quelque chose comme divers interafaces qui pourraient être affectés à un ..
public interface IValidator<T1> {
public boolean isValid(T1 t);
}
public interface IValidator<T1,T2> {
public boolean isValid(T1 t, T2 t2);
}
Quelques idées?
EDIT:
Qu'est-ce que l'objectif est?
Très simple d'avoir la possibilité de changer la définition
isValid(String t1, Integer t2) { }
dans
isValid(String t1, Integer t2, Double t3) { }
et invocation
validator.isValid("1",2);
à
validator.isValid("1",2, 3.0);
Sans modification de l'importation des classes, etc.
Oui. Mais alors je suis obligé de mettre en œuvre toutes les méthodes, plus spécifiques. Je voudrais choisir un outil et effectuer une opération dessus. –
Faites ensuite comme dans Swing et créez un adaptateur avec des implémentations vides pour chaque méthode. Vous venez ensuite de remplacer celui dont vous avez besoin. –