Problema ao fazer cast de String para No

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!