как домашнее задание, меня попросили построить какой-нибудь калькулятор с Java.
Чтобы упростить создание выражений, я хочу добавить конструкторы, предоставляющие «ярлыки» для создания классов Num и Var. Например, вместо того, чтобы писать новый Plus (новый Var ("x"), новый Num (5)), я хотел бы иметь возможность написать новый Plus ("x", 5) и получить то же результирующее выражение.
чтобы не повторять строки кода, я создал абстрактный класс с именем BinaryExpression, внутри него находятся все возможные комбинации, которые мне нужны для моих конструкторов.
Я пытаюсь найти элегантный способ создания класса плюс без необходимости переписывать тот же код снова.
public abstract class BinaryExpression implements Expression {
protected Expression x;
protected Expression y;
public BinaryExpression(Expression x, Expression y) {
this.x = x;
this.y = y;
}
public BinaryExpression(String x, Expression y) {
this(new Var(x),y);
}
public BinaryExpression(Double x, Expression y) {
this(new Num(x), y);
}
public BinaryExpression(Expression x, String y) {
this(x ,new Var(y));
}
public BinaryExpression(Expression x, Double y) {
this(x ,new Num(y));
}
public BinaryExpression(String x, String y) {
this(new Var(x) ,new Var(y));
}
public BinaryExpression(Double x, Double y) {
this(new Num(x) ,new Num(y));
}
public BinaryExpression(Double x ,String y){
this(new Num(x) ,new Var(y));
}
public BinaryExpression(String x ,Double y){
this(new String(x) ,new Num(y));
}
Я искал решение, подобное этому:
public class Plus extends BinaryExpression {
public Plus(<String,Double, Expression> x, <String,Double, Expression> y) {
super(x, y);
}
поэтому я принимаю типы этого класса только так, чтобы они соответствовали своему назначенному конструктору в классе BinaryExpression.
спасибо:)