Como copiar um contéudo de um objeto genérico para um objeto específico

Preciso de uma ajuda para copiar um objeto do tipo object para um outro específico. Por exemplo:

Tenho um método em que recebo uma String e um objeto genérico, mediante a essa String quero copiar os dados do objeto genérico para um ouutro objeto especifico TypeA ou TypeB.
Detalhe é que TypeA é diferente de TypeB por isso a idéia de recebé-lo como object

Desde já obrigado,

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Authorize("Receiving")
@Path("/Print")

public Response LabelPrint(@Context HttpServletRequest request, 
							final Object generic
						   ,@QueryParam("Type") final String Type) {

	if ( Typex.compareTo("X")) {
		
		TypeA typeA = generic;
		...
		
	} else {
		TypeB typeB = generic;
		...
	}
	
	return buildResponse(OK);   

}

Eu tentei dessa forma mais sem sucesso.

if (labelType.compareTo("X")) {             
    TypeA x = new TypeA();
    BeanUtils.copyProperties(x, generic);
}
else {
    TypeA y = new TypeA();
    BeanUtils.copyProperties(y, generic);
}

Uma opção:

if(generic instanceof TypeA) {
     //extrai para TypeA
} else {
    //extrai para TypeB
}

Porém, dependendo de como você implementou, isso não será possível.
Assim sendo, o melhor seria passar como Map.

Eu pessoalmente acho super bacana o instanceof, apesar de nunca ter visto sendo usado

@FearX

image

Darlan muito obrigado pelo retorno. Consegui resolver recebendo como String dessa forma:

public Response LabelPrint(@Context HttpServletRequest request, 
							final String objetcForImpression
						   ,@QueryParam("Type") final String Type) {

	if ( Typex.compareTo("X")) {

			try {
				ObjectMapper objetcForImpression  = new ObjectMapper();	
				TypeA typeA = objetcForImpression.readValue(objetcForImpression, TypeA.class);					
			} catch (JsonParseException e) {				
				e.printStackTrace();
			} catch (JsonMappingException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}  
	}

		...
		
	} else {
			try {
				ObjectMapper objetcForImpression  = new ObjectMapper();	
				TypeB typeB = objetcForImpression.readValue(objetcForImpression, TypeA.class);					
			} catch (JsonParseException e) {				
				e.printStackTrace();
			} catch (JsonMappingException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} 
	}
	
	return buildResponse(OK);   

}

1 curtida