¿Cómo convertir List <T> a Array t [] (para tipos primitivos) usando el método genérico?

Estoy haciendo algunas pruebas con métodos genéricos y me gustaría transformar estos dos métodos a continuación (convertFloatListToArray y convertShortListToArray) en solo uno (convertListToArray):

public class Helper{
    public static float[] convertFloatListToArray(List<Float> list){
        float[] array = new float[list.size()];

        for(int i = 0; i<list.size(); i++){
            array[i] = list.get(i);
        }

        return array;
    }

    public static short[] convertShortListToArray(List<Short> list){
        short[] array = new short[list.size()];

        for(int i = 0; i<list.size(); i++){
            array[i] = list.get(i);
        }

        return array;
    }
}

Pero cuando trato de usar genéricos, como a continuación, tengo algunos errores:

public class Helper{
    public static <T, E> T convertListToArray(List<E> list){
        T array = new T[list.size()];

        for(int i = 0; i<list.size(); i++){
            array[i] = list.get(i);
        }

        return array;
    }
}

Puedo entender las limitaciones de Java sobre los genéricos, pero me pregunto si alguien conoce alguna solución, usando el método genérico, que no estoy viendo.