Cast com castException existe?

3 respostas
G

Pessoal por acaso poderia criar uma castException dentro de uma classe normal? e usar o throws pra disparar ela? Eu estava estudando cast e pareceu esta duvida. por que existe dois tipos de cast o implicito e o explicito. A função da castException poderia ser de negar o compilador a compilar corretamento o codigo?
Grato…

3 Respostas

thiago.correa

O ClassCastException é um RuntimeException, ou seja ela ocorre em tempo de execução. Logo, acredito que não seja possível fazer o que você quer!

T

Eu recentemente escrevi um código que lançava uma ClassCastException se você passasse um objeto cuja classe não fosse a configurada.

/**
     * Adicionar uma linha à tabela.
     * @param obj A linha. 
     * @throws ClassCastException se o tipo do objeto não for o mesmo que o definido no construtor.
     */
    public void addRow(T obj) {
        if (klass.isAssignableFrom(obj.getClass()))
            linhas.add(obj);
        else
            throw new ClassCastException("Tentou-se adicionar um objeto da classe "
                    + obj.getClass().getName() + " a uma tabela cujas linhas são da classe " + klass.getName());
        fireTableRowsInserted(linhas.size(), linhas.size()) ;
    }
antoniopopete

Eu acho que uma exceção do tipo ClassCastException é do tipo não checada, então com isso ,não é obrigatório o tratamento dela, até pelo fato dela herdar de RunTimeException.
Uma exceção do tipo RunTime ela pode parar a execução do programa ou não,a depender do tipo de tratamento que é dado para aquele tipo de Exceção.

A abb = new A();
		B bbb = new B();
		bbb.moe("");
		Boolean[] teste = new Boolean[4];
		// if(teste[1] == false);
		String[] testea;
		int abc =2;
		byte def = 2;
		System.out.println("teste tipos primietvos: "+(abc == def));
		try {
			throw new ClassCastException();
		} catch (ClassCastException ex) {
			System.out.println("teste");
		} catch (Exception ex) {

		}
		int a = 200, b, c;
		a = b = c = 100;
		List s1 = new ArrayList();
		System.out.println("teste: " + (bbb instanceof Runnable));

é um exemplo de codigo que mostra que a exceção não altera em nada o fluxo de execução do programa.

Criado 27 de dezembro de 2006
Ultima resposta 28 de dez. de 2006
Respostas 3
Participantes 4