сравнить где в - PullRequest
       59

сравнить где в

2 голосов
/ 08 ноября 2011

Я ищу библиотеку со статическими функциями для устранения дублирования в коде, который сравнивает "вещи".

(evil.equals(s1) || evil.equals(s2) || evil.equals(s3))
(evil == enum1 || evil == enum2 || evil == enum3)

Ответы [ 4 ]

5 голосов
/ 08 ноября 2011

Вы могли бы сделать что-то вроде

Arrays.asList(s1, s2, s3).contains(evil)

Это было бы немного короче

2 голосов
/ 08 ноября 2011

Как насчет этого для начала:

boolean equalsAny(Object object, Object... others) {
    for (Object other : others) {
        if (other.equals(object))
            return true;
    }
    return false;
}

Object evil = ...;
SpecialClass special = ...;
AnotherClass another = ...;
if (equalsAny(evil, "aString", special, Integer.valueOf(42), another)) {
    // match found!
}
0 голосов
/ 08 ноября 2011

Я не знаю специальной библиотеки, но если вы не заботитесь о производительности, из коробки должно работать следующее:

Arrays.asList(s1, s2, s3).contains(evil);

Простая реализация без затрат на создание списка можетбыть что-то вроде:

public static boolean equalsAny(Object obj, Object ... others) {
    for (Object other: others) {
        if (obj.equals(other))
            return true;
    }

    return false;
}
0 голосов
/ 08 ноября 2011

Для второй строки оператор switch будет хорошо работать:

switch (evil) {
   case enum1:
   case enum2:
   case enum3:
      //code
      break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...