2012-05-27 10 views
9

¿Cuál es la diferencia entre el método pattern() y el método toString() en la clase Pattern?patrón() vs toString() en la clase de patrón

El doctor dice:

public String pattern() 

Devuelve la expresión regular de la que fue compilado este patrón.

public String toString() 

Devuelve la representación de cadena de este patrón. Esta es la expresión regular a partir de la cual se compiló este patrón.

Incluso su aplicación devuelve el mismo resultado:

import java.util.regex.*; 

class Test { 
    public static void main(String[] args) { 
    Pattern p = Pattern.compile("[a-zA-Z]+\\.?"); 
    String s = p.pattern(); 
    String d = p.toString(); 
    System.out.println(s); 
    System.out.println(d); 
    } 
} 

veo ninguna diferencia, así que ¿por qué hay dos métodos? ¿O me estoy perdiendo algo?

Respuesta

12

Porque cada clase tiene un método toString() que se heredó de Object. Se supone que el método toString() devuelve una cadena que representa el objeto de la mejor manera posible, incluso si es posible crear algún tipo de representación de cadena. El nombre toString() es bastante vago, por lo que agregaron un método pattern() que es más sencillo.

Y como querían toString() para devolver algo inteligente, usaron el patrón de la expresión regular, que es una buena representación de cadena para la clase Pattern.

+0

@martijin: ¿eso es todo? ... No sé por qué, pero me siento engañado. de todos modos! – WickeD

+0

@WickeD: Sí, eso es todo. :) –

0

El método toString() está en cada clase (se extiende desde la clase Object). Hay un ejemplo. System.out.print(Object o); puede imprimir información sobre Object. En realidad, esto será lo mismo: System.out.print(o.toString()). Entonces tienes una forma simple de ver cuál es el Objeto que tienes. Proveedores:

Object someUnknownObject = new JButton(); 
System.out.println(someUnknownObject); 

// output 
javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5... 

Como se puede ver se puede ver información sobre este objeto, incluso si usted no sabe que esto es un botón en absoluto.

también String es un Object por lo que es un ejemplo raro:

String str = "hello"; 
String toStr = str.toString(); 

System.out.println(str.toString().toString().toString()...); 

Esto es inútil, pero all classes have this method. Así que "mi cadena" y "mi cadena" .toString() es la misma