2012-05-27 13 views
9

Was ist der Unterschied zwischen der pattern() Methode und der toString() Methode in der Pattern Klasse?pattern() vs toString() in Musterklasse

Der Doc sagt:

public String pattern() 

Gibt den regulären Ausdruck, aus dem dieses Muster kompiliert wurde.

public String toString() 

Gibt die Stringdarstellung dieses Musters. Dies ist der reguläre Ausdruck, aus dem dieses Muster erstellt wurde.

Auch deren Umsetzung gibt das gleiche Ergebnis:

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); 
    } 
} 

ich keinen Unterschied sehen, also warum gibt es zwei Methoden? Oder fehlt mir etwas?

Antwort

12

Da jede Klasse eine toString()-Methode hat, die von Object vererbt wurde. Die toString() Methode soll einen String zurückgeben, der das Objekt am besten darstellt, wenn es überhaupt möglich ist, eine Art von String-Repräsentation zu erstellen. Der Name toString() ist ziemlich vage, so dass sie eine Methode pattern() hinzugefügt, die einfacher ist.

Und weil sie wollten, dass toString() etwas clever zurückgab, verwendeten sie das Muster der Regex, die eine gute String-Darstellung für die Pattern Klasse ist.

+0

@martijin: das ist es ?? ... ich dachte nicht warum, aber ich fühle mich betrogen !! Thnx sowieso !! – WickeD

+0

@WickeD: Ja, das ist es. :) –

0

toString() Methode ist in jeder Klasse (erstreckt sich von Klasse Object). Es gibt ein Beispiel. System.out.print(Object o); kann einige Informationen über Object drucken. Eigentlich wird das gleich sein: System.out.print(o.toString()). So haben Sie eine einfache Möglichkeit zu sehen, was das Objekt Sie haben. Versuchen:

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

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

Wie Sie sehen Sie Informationen zu diesem Objekt sehen, auch wenn Sie nicht wissen, das eine Taste überhaupt.

Auch String ist ein Object so ein sonderbares Beispiel gibt es:

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

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

Dies ist unuseful, aber all classes have this method. Also "meine Zeichenfolge" und "meine Zeichenfolge" .toString() ist das gleiche