[Resolvido]Herança de classes Final?

8 respostas
mateusviccari

Gostaria de fazer uma classe que tivesse herança de uma classe final, no caso a classe java.lang.string.
O objetivo disso é possuir uma classe String aprimorada para métodos específicos, através da anotação @Override.
Simplesmente botando isso aqui ele não funciona:

public final class SobrescritaClasseString extends java.lang.String

Devido a classe ser final, dando o erro cannot inherit from final java.lang.String.

Existe solução pra isso?

8 Respostas

kritiuns

Se a Classe é final você não pode fazer ela ser pai de nenhuma outra.

RafaelCassau

bom dia mateusviccari, exatamente como foi dito acima, qualquer classe ou método que contenha o modificador final em sua assinatura não pode ser herdado, pois são classes ou métodos vitais para a linguagem, é a mesma coisa de quando definimos uma constante em java:

public static final String CONSTANTE= " ESSA CONSTANTE NÃO PODE SER ALTERADA, POR CAUSA DO MODIFICADOR final";

A classe String é uma classe vital para o funcionamento de aplicações em Java, qualquer alteração mesmo que minima poderia causar erros catastroficos a aplicação, por essa justificativa não podemos herda-la.

caso não tenha mais duvida, por favor modifique o titulo do topico para [RESOLVIDO]

mateusviccari

Certo, então não da mesmo pra herdar a classe final.
Então, teria como eu fazer uma “cópia” da classe String?
Ou melhor, teria como ver o código da classe String, pra assim dar um ctrl+c e ctrl+v em uma classe minha, podendo assim modificar os métodos dentro da nova classe?

kritiuns

Que isso cara … acredito que para oq vc quer fazer não precise disso tudo…
Qual a sua ideia/necessidade ?

mateusviccari

seguinte… por enquanto é apenas pra ver se é possível fazer algo do genero mesmo, assim eu poderia aprimorar classes do java no meu programa para funções que são somente do meu programa.
Mas eu ja tive essa duvida, por exemplo, quando se tenta botar um método trim() em uma string nula, pra verificasse se a string não seja nula antes de fazer o trim(), e caso seja nula retornaria um valor que eu mesmo definiria.
Até é possível fazer isso, mas ai eu teria que refazer o método trim em outro método do meu programa e aplicar essa funcioonalidade nele, tudo bem que o trim é bem simples mas outros métodos de outras classes são mais complexos.

kritiuns

Cara eu criaria uma classe que teria o nome por exemplo ( StringUtils ) que teria um método que receberia uma String…
dentro dele ele verificaria se a variavel recebida é null e se fosse retornava o valor default caso contrario chamaria o método .trim() da variavel que o método recebeu que é uma String …

e assim vai … não sei se me entendeu…

class StringUtils{
    
     public static String trim(String variavel){
           if(variavel == null || variavel.isEmpty()){
               return "Default";
           }else{
              return variavel.trim();
           }
    }
}
mateusviccari

Sim, parece que o negócio mesmo é fazer desse jeito aí.

pmlm

alguém fez…

Criado 7 de dezembro de 2011
Ultima resposta 7 de dez. de 2011
Respostas 8
Participantes 4