コレクションのインスタンスから総称型を含めた型情報を文字列で取得する方法はないですかね…

ArrayList<Integer>のオブジェクトを作って、オブジェクト.getClass.getCanonicalNameでクラス名を取得して
Class.forName(取得したクラス名).getInstanceしてもArrayList<E>にしかならないし…

総称型の情報は実行時にロストするという話を幾つかのサイトで見たのですが、
代入しようとすると当たり前のようにClassCastExceptionだし…

何か別の方法があります?