Olá, estou com um problema ao fazer um cast de String para No, sendo q a minha No eh uma classe criada por mim. Segue abaixo a classe No e o cast que eu estou tentando fazer:
public class No implements Comparable {
private String nome = "";
private Vector arestas = new Vector();
private No anterior;
private float D = Caminho.INFINITY; // Custo atual do caminho partindo da fonte
public No() {
}
public No(String nome) {
this.setNome(nome);
}
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Vector getArestas() {
return this.arestas;
}
public void setArestas(Vector arestas) {
this.arestas = arestas;
}
public float getPeso(No destino) {
Iterator i = this.getArestas().iterator();
while (i.hasNext()) {
Aresta aresta = (Aresta) i.next();
if ((aresta.getOrigem().compareTo(this) == 0 && aresta.getDestino().compareTo(destino) == 0)
|| (aresta.getOrigem().compareTo(destino) == 0 && aresta.getDestino().compareTo(this) == 0)) {
return aresta.getPeso();
}
}
return Integer.MAX_VALUE;
}
public void adicionarAresta(Aresta aresta) {
if (aresta == null) {
throw new IllegalArgumentException("Parametro invalido - aresta nula");
}
if (this.getArestas().indexOf(aresta) == -1) {
this.getArestas().add(aresta);
}
}
public No getAnterior() {
return this.anterior;
}
public void setAnterior(No anterior) {
this.anterior = anterior;
}
public float getD() {
return this.D;
}
public void setD(float D) {
this.D = D;
}
public No[] getVizinhos() {
No[] nos = new No[this.getArestas().size()];
Iterator i = this.getArestas().iterator();
if (this.getArestas().size() == 0) {
return null; // Sem nós vizinhos
}
int count = 0;
while (i.hasNext()) {
Aresta aresta = (Aresta) i.next();
if (aresta.getOrigem().compareTo(this) == 0) {
nos[count] = aresta.getDestino();
} else {
nos[count] = aresta.getOrigem();
}
count++;
}
return nos;
}
public int compareTo(Object obj) {
if (obj == null) {
return -1;
}
if (obj instanceof No) {
No other = (No) obj;
return this.getNome().compareToIgnoreCase(other.getNome());
} else {
return -1;
}
}
// public boolean equals(Object obj) {
// return this.compareTo(obj) == 0;
// }
public String toString() {
return this.getNome();
}
}
abaixo está o método no qual eu estou com problema do cast (linhas 32 e 33):
private void carregarArquivo(File fSelecionado) {
String linha = null;
int pos = -1;
try {
BufferedReader in = new BufferedReader(new FileReader(fSelecionado));
StringTokenizer st = null;
while ((linha = in.readLine()) != null) {
st = new StringTokenizer(linha, "/");
if (pos <= 0) {
pos++;
}
while (st.hasMoreTokens()) {
if (pos == 0) {
No no = new No(st.nextToken());
if (adicionar(nos, no)) {
this.appendLog("green", "Nó \"" + no.getNome() + "\" criado.");
// Atualiza o visual dos controles
cbDe.updateUI();
cbAte.updateUI();
} else {
this.appendLog("red", "Nó \"" + no.getNome() + "\" já existe.");
}
} else if (linha.trim().equalsIgnoreCase("---")) {
break;
} else {
No de = (No) st.nextElement();
No ate = (No) st.nextElement();
float peso = Float.parseFloat(st.nextToken());
if (de.compareTo(ate) != 0) {
Aresta aresta = new Aresta(de, ate, peso);
// Verifica se o nó já existe
if (adicionar(arestas, aresta)) {
this.appendLog("green", "Aresta \"" + aresta + "\" criada.");
// Atualiza o visual dos controles
cbDe.updateUI();
cbAte.updateUI();
}
}
}
}
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Obrigado!