Pattern类中的pattern()vs toString()

Sur*_*ran 9 java regex pattern-matching

这个pattern()方法和toString()方法有什么区别Pattern

医生说:

public String pattern()
Run Code Online (Sandbox Code Playgroud)

返回编译此模式的正则表达式.

public String toString()
Run Code Online (Sandbox Code Playgroud)

返回此模式的字符串表示形式.这是编译此模式的正则表达式.

即使他们的实现返回相同的结果:

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为没有区别,为什么有两种方法呢?或者我错过了什么?

Mar*_*aux 12

因为每个类都有一个toString()继承自的方法Object.toString()如果甚至可以创建某种字符串表示,则该方法应该返回一个字符串,该字符串以最佳方式表示对象.这个名字toString()很模糊,所以他们添加了一个pattern()更直接的方法.

因为他们想要toString()返回一些聪明的东西,所以他们使用正则表达式的模式,这是一个很好的字符串表示Pattern.