Ошибка при попытке реализовать 2 метода в другом методе - java - PullRequest
0 голосов
/ 20 марта 2020

У меня есть 2 метода isArithmetri c и isRelational, оба эти метода используются, чтобы увидеть, принадлежит ли e определенному экземпляру класса (например, если e является типом, подобным 2 + 3, то его в isArithmetri c и является экземпляром Additiona, и если e подобен 3> 2, то он находится в isRelational и является экземпляром GreaterThan). Мне нужно реализовать метод isTypeCorrect, который, как я знаю, использует два метода, упомянутых выше, чтобы увидеть, если используется, возвращает true, если e является одним из двух указанных выше методов, и false в противном случае. Дело в том, что я не знаю, как реализовать isTypeCorrect, я пытался вызвать метод из isTypeCorrect и использовал оператор if, но он не работал. Любая помощь будет оценена.

Код:

private boolean isArithmetic(Expression e) {
    return 
            e instanceof Addition 
        ||  e instanceof Subtraction
        ||  e instanceof Multiplication;
}

/**
 * sub-routine that can be used to check if this is type correct
 * true if e is one of the three classes, or their subclasses (if any)
 */
private boolean isRelation(Expression e) {
    return 
            e instanceof Equal 
        ||  e instanceof GreaterThan
        ||  e instanceof LessThan;
}

/**
 * If this collector is AddAll or TimesAll, then all stored expressions must be integer expressions
 * (i.e., Addition, Subtraction, Multiplication).
 * If this collection is ConjoinAll or DisjoinAll, then all stored expressions must be boolean expressions
 * (i.e., GreaterThan, LessThan, Equal)
 * @return whether it is possible to evaluate the stored collection of expressions.   
 */
boolean isTypeCorrect() {

}

1 Ответ

0 голосов
/ 20 марта 2020

Посмотрите на этот код.

boolean isTypeCorrect() {
    boolean result = false;
    AddAll a = new AddAll();
    TimesAll t = new TimesAll();
    if (this.isArithmetic(a) || this.isRelation(t)) {
        result = true;
    }

    return result;
}

a и t являются новыми экземплярами AddAll и TimesAll соответственно без изменяемых аргументов конструктора. Как они могут быть чем-то другим каждый раз, когда вы вызываете этот метод. Фактически они будут иметь значение local и go вне области при выходе из метода. Я не могу сказать, что происходит, но это похоже на недостаток дизайна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...