[Resolvido]Encadeamento de Métodos String/StringBuilder

3 respostas
gRoOve

Estou com uma dúdiva com relação ao encadeamento de métodos no seguinte código:

public class Atendimento {

   public static void main (String[] args) {
       StringBuffer s = new StringBuffer("123456789");
             System.out.println( s.substring(3,6).delete(1,3).insert(1,"24") );
   }   }

Quando compilo ocorre o seguinte erro:

Atendimento.java:6: cannot find symbol
symbol  : method delete(int,int)
location: class java.lang.String
               System.out.println( s.substring(3,6).delete(1,3).insert(1,"24")
);
                                                                   ^
1 error

Imagino que ocorra este erro pois o método substring retorna uma String, e a classe String não possui um método delete(). Seria isso?
ver documentação método substring classe stringbuffer

3 Respostas

peerless

eh isso mesmo, quando o substring eh chamado o retorno ja eh uma java.lang.String que nao tem o metodo delete.

ViniGodoy

É isso mesmo. E prefira usar StringBuilder no lugar do StringBuffer. O StringBuffer tem todos os métodos sincronizados e isso é desnecessário (e mais lento) em 99.99% dos casos.

gRoOve

Vlw galera, mais uma resolvida :slight_smile:

Criado 23 de agosto de 2011
Ultima resposta 24 de ago. de 2011
Respostas 3
Participantes 3