Мне нужно несколько советов относительно подхода в Java, так как делегаты немного отличаются от .NET. Я хотел бы создать несколько интерфейсов, которые имеют одинаковое имя и имя метода, но отличается от них только количеством параметров. Что-то вроде Действия в .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;
}
}
Это работает, но не является хорошим решением. ИМХО, мне нужно что-то вроде различных интерфейсов, которые могут быть назначены одному ..
public interface IValidator<T1> {
public boolean isValid(T1 t);
}
public interface IValidator<T1,T2> {
public boolean isValid(T1 t, T2 t2);
}
Есть идеи?
EDIT:
Какова цель?
Очень просто иметь возможность изменить определение
isValid(String t1, Integer t2) { }
в
isValid(String t1, Integer t2, Double t3) { }
и в вызове
validator.isValid("1",2);
до
validator.isValid("1",2, 3.0);
Без изменения класса импорта и т. Д.