отличный: как упростить/переписать этот метод в отличном

protected int xMethod (Integer a, Integer b) {
  if (a<b)
    return 1
  else if (a>b)
    return 2
  else
    return 3
}

Интересно, существует ли некоторый способ переписать выше метода по-другому в отличном? как теперь очень стиль Java.

5
задан 26 February 2010 в 23:39
поделиться

4 ответа

Кажется, что функции просто нужно возвращать 3 разных значения в зависимости от того, меньше ли a, равно или больше b. В Groovy уже есть оператор, который делает это:

a <=> b

Возвращаемые значения - -1, 0 и 1. Возможно, лучше всего реорганизовать код, чтобы использовать этот оператор вместо xMethod, если это возможно.

Конечно, если важны точные значения 1, 2 и 3, а не только 3 различных значения, то вы не можете этого сделать.

2
ответ дан 15 December 2019 в 06:24
поделиться

Как насчет: возврат (a <=> b) + 2

0
ответ дан 15 December 2019 в 06:24
поделиться

Если вы удалите два вхождения Integer из подписи, вы можете вызвать метод с любыми параметрами, для которых определено <.

Например.

assert x.xMethod (1, 2) == 1
assert x.xMethod ("2", "1") == 2
assert x. xMethod (2.0, 2.0) == 3

0
ответ дан 15 December 2019 в 06:24
поделиться

Просто чтобы расширить ответ Марка:

protected int xMethod (Integer a, Integer b) {
    switch ( a <=> b ) {
       case -1: 1; break
       case  1: 2; break
       case  0: 3; break
    }
}

Однако вы должны спросить, имеет ли этот метод какое-либо значение. Если вызывающий может быть изменен на принятие -1, 0, 1, тогда у метода нет причин для существования.

1
ответ дан 15 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: