Разделение данных по типу без условных конструкций
Привет сообществу.
Возможно ли (и если да, то стоит ли) обойтись без условных конструкций, если нужно задействовать различные алгоритмы для разных типов входных данных?
Например, есть таблица с данными (можно пройтись по ячейкам) и есть массив значений соответствующей размерности, которые в этой таблице должны быть. Каждое из значений может быть одного из нескольких типов (предположим, String или Image) и должно по-своему сверяться с ячейкой. Можно ли организовать проверку так, чтобы избежать (не перенести, а вообще не использовать) конструкций типа
if (expected instanceof String) {...}
Как я понимаю, если это возможно, то с помощью обобщений, но не могу сообразить как.
UPD.
Значения для проверки хранятся в переменных одного типа - Object, так как передаются через единую структуру (например, так: Object[] expectedValues
). Поэтому не выходит положиться на проверку типов при компиляции.