Как построить объект типа Java во время выполнения из определения общего типа и параметров типа времени выполнения?

Предполагая объявление универсального типа (Java)

class Foo<T> {
    public T bar;
}

Как я могу во время выполнения создать экземпляр объекта Type, который представляет Foo, параметризованный для определенного типа T (также известный только во время выполнения)?