Предположим, ваша функция someFunction
делает что-то подобное
input.doA();
input.doB();
Затем создайте интерфейс, который содержит эти два метода
interface PageableOrSort {
void doA();
void doB();
}
и определите ваш метод как
void someFunction(PageableOrSort input) {
input.doA();
input.doB();
}
И заставьте ваши классы реализовывать интерфейс
public class Pageable implements PageableOrSort {
@Override
public void doA() {
//do stuff
}
@Override
public void doB() {
//do stuff
}
}
и то же самое для другого класса. Затем вы можете вызвать метод с любым классом, реализующим интерфейс
Pageable pageable = new Pageable();
//...
this.someFunction(pageable)