Pattern 类中的 pattern() 与 toString()
Posted
技术标签:
【中文标题】Pattern 类中的 pattern() 与 toString()【英文标题】:pattern() vs toString() in Pattern class 【发布时间】:2012-06-02 03:54:48 【问题描述】:pattern()
方法和Pattern
类中的toString()
方法有什么区别?
文档说:
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);
我看不出有什么区别,那为什么有两种方法呢?还是我错过了什么?
【问题讨论】:
【参考方案1】:因为每个类都有一个从Object
继承的toString()
方法。 toString()
方法应该返回一个字符串,它以最好的方式表示对象,如果它甚至可以创建某种字符串表示。
toString()
这个名字很模糊,所以他们添加了一个方法pattern()
更直接。
因为他们希望 toString()
返回一些聪明的东西,所以他们使用了正则表达式的模式,这是 Pattern
类的一个很好的字符串表示形式。
【讨论】:
@martijin:就这样?? ...我不知道为什么,但我觉得被骗了!!无论如何,谢谢!【参考方案2】: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
是Object
所以有一个奇怪的例子:
String str = "hello";
String toStr = str.toString();
System.out.println(str.toString().toString().toString()...);
这没什么用,但是all classes have this method
。所以“我的字符串”和“我的字符串”.toString() 是一样的
【讨论】:
以上是关于Pattern 类中的 pattern() 与 toString()的主要内容,如果未能解决你的问题,请参考以下文章
Factory Pattern用于实例化Factory类中的类