Я пытаюсь создать статический метод утилиты, который принимает один вход класса A
, экземпляры которого получили свой собственный уникальный id
, и получить значение boolean
, описывающее, является ли определенный к ним относится характеристика. Нет описания для описания отношений; без формулы два варианта, которые возникли вначале, были static final int[]
, содержащие все истинные id
s или строку «или» ||
тестов. Есть ли другие лучшие варианты там или какое-то особое преимущество для использования одного над другим? Задача - не большой подвиг, но я хочу, чтобы она была простой и удобочитаемой.Хранение массива заданных условий
Вот пример, чтобы помочь вам получить общее представление о том, что я имею в виду:
public class UtilitiesA {
// first method of retrieval- static storage array
private static int[] validIds = {
A.instanceM.id, A.instanceZ.id, A.instanceL.id, A.instanceF.id, A.instanceP.id
};
public static boolean getHasCharacteristic(A input) {
for (int id : validIds) if (a.id == id) return true;
return false;
}
// vs the second method...
public static boolean getHasCharacteristic2(A input) {
return (input.id == A.instanceM.id ||
input.id == A.instanceZ.id ||
input.id == A.instanceL.id ||
input.id == A.instanceF.id ||
input.id == A.instanceP.id)
}
}
Второй более интуитивным я думаю, но и более повторы. Любые предложения будут высоко ценится.
Да, он будет работать примерно 0-10 раз за цикл с частотой 20 Гц, поэтому несколько раз. Тогда я могу сохранить данные как список. – vbee
Ваш первый вариант одинаково важен, и я не знаю, что это будет работать лучше или хуже, за исключением того, что вы можете называть его одной строкой. –
Мне нравится, насколько это лаконично ... может попытаться выяснить, что List.contains вызывает «под капотом». – vbee