Un ejemplo de esto es:
SBHttpRequest<D extiende SBHttpDeserializer<?>, RBT> : esto se compila bien pero el tipo no está limitado para la clase de respuesta
SBHttpRequest<D extiende SBHttpDeserializer<RT>, RBT> : Esto no se compila: RT no se puede resolver en un tipo
También probé SBHttpRequest<D<RT> extiende SBHttpDeserializer<RT>, RBT>: lo cual me dice
el < > están en los lugares equivocados
D es la clase deserializador que extiende SBHttpDesrializer
RT es el tipo de respuesta o el tipo al que el deserializador cambia la respuesta
RBT es el tipo de cuerpo de la solicitud (siempre un byte[] en este caso)
Me gustaría utilizar el tipo de respuesta para delimitar algunas condiciones en la clase y borrar algunas advertencias del compilador de tipos sin formato.
"También probé SBHttpRequest<D<RT> extiende SBHttpDeserializer<RT>, RBT>" - Agregar RT como parámetro genérico: SBHttpRequest<RT, D<RT> extiende SBHttpDeserializer<RT>, RBT>
-Turing85
27/03/2021 a las 19:56
El único problema con esa solución es que requerirá que otros proyectos que la utilicen agreguen el tipo de respuesta, pero puede ser suficiente.
-Saitx
27/03/2021 a las 20:07
------------------------------------
Agregue un parámetro de tipo genérico para el tipo de retorno o cree una clase/interfaz cuando desee bloquear el tipo:
class ByteArraySBHttpDeserializer implements SBHttpDeserializer<byte[]> {}
Entonces:
SBHttpRequest< ByteArraySBHttpDeserializer, RBT>
Es un poco complicado, pero también lo son los genéricos.
------------------------------------
Terminé yendo conLa idea de Turing85.
Solo incluye el tipo
A pesar de la queja de sonarlint acerca de que los nombres genéricos tienen más de 1 carácter:
clase pública SBHttpRequest<RESPONSE_TYPE, DESRERIALIZER_TYPE extiende SBHttpDeserializer<RESPONSE_TYPE>, REQUEST_BODY_TYPE>