1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Referencia instanceof

Pessoal tenho uma estrutura de projetos +- assim

Common
  |--classes
     |--AbstractEntity

Ai tenho outros dois projetos que tem uma dependência desse projeto Common

Gerencial
  |--Common
  |--Classes
     |--Rede
     |--ClasseExemplo

Essa minha classe Rede ela estende AbstractEntity

Processo
  |--Common
  |--Gerencial
  |--Classes
     |--ProcessoMain

No meu projeto Processo dentro da classe ProcessoMain eu tenho o seguinte

Rede rede = new Rede()
System.out.println(rede instanceof AbstractEntity);

e isso esta imprimindo false

Na classe ClasseExemplo tenho o mesmo codigo acima e retorna true, não estou sabendo se as referencias estao corretas.

Classe AbstractEntity

public abstract class AbstractEntity<ID extends Serializable> implements Serializable, BasicEntity {

    private static final long serialVersionUID = 1L;

    public abstract ID getId();
}

Classe LogicalExcludeEntity

public abstract class LogicalExcludeEntity<ID extends Serializable> extends AbstractEntity<ID>{

    private static final long serialVersionUID = 1L;

    public LogicalExcludeEntity() {
        if (getExcluido() == null) {
            this.setExcluido(false);
        }
    }

    public abstract Boolean getExcluido();
    public abstract void setExcluido(Boolean excluido);

}

Classe Rede

public class Rede extends LogicalExcludeEntity<Integer> {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="ID_REDE")
    private Integer id;

Criei um DTO dentro do Gerencial

public class RedeDTO extends SelectItem implements Serializable {

    private static final long serialVersionUID = 1L;

    public RedeDTO(Rede rede) {
        this.id = rede.getId();
        this.nome = rede.getNome();
    }

    private Integer id;
    private String nome;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

    @Override
    public String getLabel() {
        return nome;
    }

    @Override
    public Object getValue() {
        return this;
    }
}

e alterei o meu Converter para fazer um teste

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {

        if (value == null) {
            return "";
        }
        if (value instanceof String) {
            return (String) value;
        }

        return ((SelectItem)value).getLabel();
    }

E o erro é

java.lang.ClassCastException: br.com.auttar.estrutura.organizacional.entities.dto.RedeDTO cannot be cast to javax.faces.model.SelectItem

Sendo a que a referencia dos dois do primefaces é a mesma

Alguma sugestão

  • Tem como mostrar as 2 classes? Só pra facilitar a análise

    Rodrigo Sasaki   09 de dez de 2013
  • A rede e AbstractEntity?

    Felipe Flores   09 de dez de 2013
  • Isso mesmo, as duas classes que estão te dando problema

    Rodrigo Sasaki   09 de dez de 2013
  • Feito, incluida, coloquei mais uma do meio

    Felipe Flores   09 de dez de 2013
  • Eu chutaria que você tem duas classes AbstractEntity no seu projeto e que está referenciando o errado na classe onde está o System.out.println(). Se você procurar por essa classe dando um ctrl+shift+T (se estiver usando eclipse), quantas classes com esse nome aparecem?

    Guilherme Gomes   09 de dez de 2013
Mostrar todos os 6 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.