2012-05-27 6 views
9

Patternクラスのpattern()メソッドとtoString()メソッドの違いは何ですか?PatternクラスのtoString()とパターンクラス

DOCは言う:

public String pattern() 

はこのパターンがコンパイルされた正規表現を返します。

public String toString() 

このパターンの文字列表現を返します。これは、このパターンがコンパイルされた正規表現です。

であっても、その実装は同じ結果を返します。

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

を私は何の違いを見ていないので、なぜ二つの方法があるのですか?または私は何かを逃していますか?

答えて

12

各クラスにObjectから継承されたtoString()メソッドがあるためです。 toString()メソッドは、何らかの種類の文字列表現を作成することが可能な場合でも、できるだけオブジェクトを表す文字列を返すことになっています。 名前toString()はかなり曖昧ですので、より簡単な方法pattern()を追加しました。

そして、toString()が何かを返すようにしたかったので、Patternクラスの良い文字列表現である正規表現のパターンを使用しました。

+0

@martijin:thats it ?? ...私はなぜ、私はだまされている気がしない!とにかくthnx! – WickeD

+0

@WickeD:はい、そうです。 :) –

0

toString()メソッドは、各クラスにあります(クラスObjectから拡張)。例があります。 System.out.print(Object o);は、Objectに関する情報を表示できます。実際にはこれは同じになります:System.out.print(o.toString())。だからあなたはあなたが持っているオブジェクトを見て簡単な方法があります。試してみてください:

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

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

ご覧のとおり、このオブジェクトについての情報は、ボタンが一切わからない場合でも表示されます。

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

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

これは役に立たないですが、all classes have this method

またStringはとても奇妙な1例があるObjectあります。 "my string"と "my string" .toString()は同じです