Cast para objeto especifico

Bom dia,

gostaria de saber se é possível realizar o cast de um valor String, para um objeto especifico na qual eu pego o valor da String, faço um split e cada pedaço eu converto para um valor… Exemplo:

public class Telefone{

    private Integer ddd;
    private Integer numero;

    //getters & setters

}
public class InicializaSistema{

    private Telefone telefone;

    public void teste(){
        telefone = (Telefone) 115550000;
    }
}

Ai creio que alguma coisa na classe Telefone, terá algo que eu possa fazer o split pra tirar os dois primeiros números. Mas não sei como funciona esse lance do cast.

Antes de falar do cast, só um detalhe, o ddd e o numero do Telefone deveriam ser String.
Telefones podem conter zeros à esquerda, mas os tipos de dados numéricos não.

Referente ao cast, ele só funciona quando há polimorfismo.

Você só vai fazer um cast para um tipo de dado mais específico, quando você tem uma variável de um tipo mais genérico mas sabe que aquela variável aponta para uma referência de um tipo específico.

Por exemplo o literal 115550000 é um valor do tipo int e um int não estende a classe Telefone então não tem como fazer cast.

Agora se você tivesse por exemplo uma variável do tipo Object e essa variável estivesse referenciando um objeto do tipo Telefone, então você poderia fazer o cast de Object para Telefone.

Exemplo:

// A variável 'objeto' é do tipo 'Object'
// Mas ela está referenciando um 'Telefone'
Object objeto = new Telefone("11", "5550000");

// erro de compilação, 'Object' não possui um método 'getDdd'
objeto.getDdd(); 

// erro de compilação, 'Object' não possui um método 'getNumero'
objeto.getNumero();

// Eu sei que a variável 'objeto' está apontando para um objeto 'Telefone'
// Então posso fazer o cast e acessar os membros da classe 'Telefone'
Telefone telefone = (Telefone) objeto;

// Agora posso chamar o método 'getDdd'
telefone.getDdd(); 

// Agora posso chamar o método 'getNumero'
telefone.getNumero();
2 curtidas