Вот общий метод, который делает то, что вы хотите, за исключением того, что вы передаете в поле name , а не сам Field
, потому что тогда вы можете быть уверены, что Field и Class совпадают. Рассмотрим список со смесью экземпляров разных классов, каждый из которых имеет тип MyClass (но, возможно, подкласс) - каждый класс может использовать свое поле для данного имени столбца.
static <T> List<T> findRowByColumnValue(List<T> array, String column, Object compareValue){
List<T> hits= new ArrayList<T>();
for (T element : array) {
if (element != null && compareValue.equals(
element.getClass().getField(column).get(element))
hits.add(element);
}
return hits;
}
Вы можете оптимизировать, кэшируя Поле для данного класса и т. Д., Но я бы не стал изначально, если вы не заметите проблему с производительностью.