Preciso gerar uma lista genérica
List<?> listaGenerica;
tendo como parâmetro uma string com o caminho da classe, como mostrado abaixo.
Class class = Class.forName(“com.teste.Endereco”);
Isso é possível?
Preciso gerar uma lista genérica
List<?> listaGenerica;
tendo como parâmetro uma string com o caminho da classe, como mostrado abaixo.
Class class = Class.forName(“com.teste.Endereco”);
Isso é possível?
Fala amigão blz? A parte de criar uma lista genérica é fácil utilize Object, já que tudo em java é Object. Mais genérico que abaixo, impossível:
List<Object> listaGenerica;
Só não esqueça que poderá receber qualquer objeto nessa lista, o que significa que você terá de fazer tratamentos e com certeza Casting’s para utilizar corretamente o objeto ali depositado!
Desculpe a confusão na descrição da pergunta pois eu estou confuso mesmo…kkk
Tenho a seguinte classe de entidade do hibernate.
@TypeDefs({
@TypeDef(name = "jsonbEndereco", typeClass = JsonBinaryType.class})
})
@Entity
@Table(name = "teste")
@SequenceGenerator(name = "teste_id_seq", sequenceName = "teste_id_seq", allocationSize = 1)
public class Teste implements Serializable {
private static final long serialVersionUID = 6800342991944554204L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "teste_id_seq")
private Integer id;
private String nome;
private String cpf;
@Type(type = "jsonbEndereco")
@Column(columnDefinition = "jsonbEndereco")
private List<Endereco> enderecos;
ao converter para lista de endereços, ele converte todos os campos como string, não permitindo o typecast pata endereço.
OBJECT_MAPPER.readValue(string, clazz);
Isso porque o clazz vem como java.util.List
Resouvi este problema ao usar a lista onde sei que é uma List com o seguinte código.
Teste teste = testeCTR.carregar(1);
Endereco endereco = null;
ObjectMapper mapper = new ObjectMapper();
List<Endereco> enderecos = mapper.convertValue(teste.getEnderecos(), new TypeReference<List<Endereco>>() {});
Minha intenção era passar como parâmetro br.com.jenkins.Endereco
@TypeDefs({
@TypeDef(name = "jsonbEndereco", typeClass = JsonBinaryType.class, parameters = {
@Parameter(name = JsonBinaryType.CLASS, value = "br.com.jenkins.Endereco")})
})
e ao converter o json queria converter e mapear corretamente.
OBJECT_MAPPER.readValue(string, new TypeReference<List<com.teste.Endereco>>() {});
me desculpe se ainda esta confuso…
Criar o lista de objetos a partir de um Type de uma classe eu não consegui…
Mas contornei o erro Criando uma classe ListaEndereco que contem uma lista de endereço, e dessa forma funcionou.
public class ListaEndereco {
private List<Endereco> enderecos;
public List<Endereco> getEnderecos() {
return enderecos;
}
public void setEnderecos(List<Endereco> enderecos) {
this.enderecos = enderecos;
}
}
public class Endereco {
private Integer enderecoid;
private String endereco;
public Integer getEnderecoid() {
return enderecoid;
}
public void setEnderecoid(Integer enderecoid) {
this.enderecoid = enderecoid;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}
Type type = ListaEndereco.class;
String json = "{\"enderecos\": [{\"endereco\": \"Teste\", \"enderecoid\": 1}, {\"endereco\": \"Teste2\", \"enderecoid\": 2}, {\"endereco\": \"Teste3\", \"enderecoid\": 3}]}";
ListaEndereco lista = (ListaEndereco) OBJECT_MAPPER.readValue(json, type.getClass());
Muito obrigado a todos. Pela ajuda