Olá, estou tentando acrescentar alguns métodos a interface NodeList para facilitar o processamento dos dados. O problema é que, como dito, NodeList é um interface, e portanto, usar “class meuNodeList extends NodeList” não funciona. Usando “abstrat class meuNodeList implements NodeList” o programa compila mas não roda:
Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerc
es.internal.dom.DeferredElementImpl
Alguem sabe o que fazer? Eu terei que implementar novamente os métodos da interface NodeList?
[quote=rissato]Olá, estou tentando acrescentar alguns métodos a interface NodeList para facilitar o processamento dos dados. O problema é que, como dito, NodeList é um interface, e portanto, usar “class meuNodeList extends NodeList” não funciona. Usando “abstrat class meuNodeList implements NodeList” o programa compila mas não roda:
Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerc
es.internal.dom.DeferredElementImpl
Alguem sabe o que fazer? Eu terei que implementar novamente os métodos da interface NodeList?[/quote]
a) NodeList é uma interface com só 2 métodos, qual é a dificuldade de implementá-los?
b) Não é o caso de NodeList, mas muitas vezes, para uma interface complicada, há uma implementação padrão ou abstract (onde você tem de completar com alguma coisinha). Por exemplo, no caso de javax.swing.TableMode, existe uma implementação padrão - DefaultTableModel - e outra abstract - AbstractTableModel.
agora eu estou tentando implementar os métodos item() e getLength(). O problema é que ao executar o programa esse erro que eu postei continua aparecendo
olhe o stack trace da excecao e va na linha apontada e deve haver um cast que nao completa corretamente (muito provavelmente nao tem a ver com a interface)
e qdo vc diz que sua classe “implementa” uma interface, o que vc esta definindo é que sua classe terá tdos os metodos daquela interface, como um contrato.
Ae cabe a vc implementar os metodos…
[quote]
The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.[/quote]http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/NodeList.html
1 - pra implementar os meus métodos, eu vou ter que “re-implementar” os métodos getLength() e item() da interface NodeList, e como iniciante, eu não faço idéia do que tem dentro deles;
2 - Esse resultado de um cast:
Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerc
es.internal.dom.DeferredElementImpl
Consegui achar uma implementação para a interface NodeList:
[quote]class DNL implements NodeList {
Vector vect = null;
DNL(Vector v) {
vect = v;
}
public int getLength() {
return vect.size();
}
public Node item(int i) {
return (Node)vect.elementAt(i);
}
public String toString() {
return vect.toString();
}
}[/quote]queria agora que alguém me explicasse como funciona a MÁGICA através da qual o vetor vect é preenchido com os dados que são gravados em uma instância da DNL. Confesso que desde quando eu comecei com Java, essa foi a primeira vez que eu “boiei” completamente. :shock:
Rissato, como todos já disseram, interfaces não implementam métodos! Apenas os define. Ou seja, dentro de uma interface, o método não possui código algum.
Quanto à classe DNL que você colocou, se você prestar um pouquinho de atenção, vai ver que o construtor recebe um parâmetro, e que esse parâmetro é colocado na variável vect.