Я пытаюсь создать DSL Java API с шаблоном Builder для типа Generics.Java Generics Type DSL with Builder Шаблон
У меня есть следующий класс:
public class Rule<T> {
private Predicate<T> condition;
public ConditionBuilder<T> when() {
return new ConditionBuilder<>(this);
}
//setter and getter
}
и следующий класс ConditionBuilder:
public class ConditionBuilder<T> {
private Rule<T> parent;
public ConditionBuilder(Rule<T> parent) {
this.parent = parent;
}
public ConditionBuilder<T> condition1() {
parent.setCondition(l -> l == 0); // I would like an Integer
return this;
}
public ConditionBuilder<T> condition2() {
parent.setCondition(l -> l.length() > 3); // I would like a String
return this;
}
}
я пытаюсь найти решение для установки общего типа на лету как Integer (соотв. String) для условия 1 (соответственно условие 2).
Есть ли какой-либо шаблон или решение, чтобы избежать выполнения instanceof
проверки?
Можете ли вы описать более широкую задачу, которую вы пытаетесь выполнить? Зачем вам нужно «условие1» и «условие2»? Почему бы не использовать параметр «Предикат»? Не используйте дженерики, если вы не хотите использовать общие типы. – 4castle