Función genérica de Java: cómo devolver el tipo genérico

Aquí hay un patrón genérico de Java:

public <T> T getResultData(Class<T> resultClass, other_args) { 
   ...
   return resultClass.cast(T-thing);
}

Una llamada típica se parece a:

   DoubleBuffer buffer;
   buffer = thing.getResultData(DoubleBuffer.class, args);

Nunca he podido averiguar cómo usar este patrón de forma limpia cuando el tipo de retorno deseado es, en sí mismo, genérico. Para ser 'concreto', ¿qué pasa si una función como esta quiere regresar?Map<String,String>? Como no puede obtener un objeto de clase para un genérico, por supuesto, la única opción sería pasarMap.class, y luego necesitas un yeso y un@SuppressWarning&nbsp;después de todo.

Uno termina con una llamada como:

Map<String, String> returnedMap;
returnedMap = thing.getResultData(Map.class, some_other_args);

Ahora uno ha vuelto a necesitar lanzamientos y suprimir una advertencia.

Supongo que uno podría tomar algo de lajava.lang.reflect.Type&nbsp;familia en lugar de laClass, pero esos no son especialmente fáciles de inventar. Eso parece como:

class Dummy {
 Map<String, String> field;
}

...

Type typeObject = Dummy.class.getField("field").getGenericType();

Dado esto, la función llamada podría extraer el tipo base y usarlo para la conversión o la nueva instancia, pero el negocio de campo ficticio se ve feo.

Tenga en cuenta que las funciones como esta no siempre están llamandonewInstance. Obviamente, si lo hacen, no necesitan llamarresultClass.cast.