设计java.util.regex.Pattern和java.util.regex.Matcher的好处是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计java.util.regex.Pattern和java.util.regex.Matcher的好处是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1895字,纯文字阅读大概需要3分钟。
内容图文
我认为似乎java.util.regex.Pattern和java.util.regex.Matcher是聚合关系.而且java API表示在下面使用它们.
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
为什么Pattern和Matcher是通过静态方法初始化的?这种可能性带来的好处是什么?是否直接在我的来源上给劣势呼叫创建者带来了不利影响?
解决方法:
为什么通过静态工厂方法创建模式?
A (Pattern) is compiled representation of a regular expression.
Pattern对象将与一个模式相关联,并且该对象的用户应创建一次并使用多次.通过提供静态工厂,Pattern类可以自由地在返回Pattern对象之前执行内部检查.例如,它可以(如果希望)缓存Pattern实例,如果在另一个编译调用中提供了相同的pattern字符串,则返回缓存的实例(注意:尽管这不是其实现方式,但是它具有这种自由度)由于使用静态工厂).
为什么Matcher是通过Pattern上的工厂方法创建的?
匹配器可用于两个目的
(下面是简化透视图,以进行讨论,有关更多详细信息,请参见Java doc of Matcher):
>检查给定的字符串是否与给定的正则表达式匹配.
>将给定的字符串与给定的模式匹配,并返回各种匹配结果.
对于第一种情况,可以使用Pattern.matches(regex,string)形式的方法调用.在这种情况下,将编译正则表达式,并在匹配后返回布尔结果.请注意,这是一种编程的功能样式-在这里可以正常工作,因为没有要维护的匹配状态.
对于第二种情况,必须保持匹配状态,用户可以在执行匹配后查询.因此,在这种情况下,使用了Matcher对象,该对象可以保持匹配结果的状态.由于没有相应的Pattern对象就不能存在Matcher对象,因此API开发人员只能通过Pattern实例来创建它-因此用户可以调用p.matcher(‘aaaaab’).在内部,Pattern类中的代码如下所示:
public Matcher matcher(CharSequence input) {
if (!compiled) {
synchronized(this) {
if (!compiled)
compile();
}
}
Matcher m = new Matcher(this, input);
return m;
}
可以看出,Matcher将Pattern用作构造函数参数-以便可以在各个点调用它来获取&保持比赛结果
聚苯乙烯
像任何API一样,Pattern和Matcher的实现方式也可能有所不同-并非所有Java API的设计都是一致的-我想开发那些API的开发人员总会有一些特点.上面的答案是我对那些开发人员采用的方法的解释.
内容总结
以上是互联网集市为您收集整理的设计java.util.regex.Pattern和java.util.regex.Matcher的好处是什么?全部内容,希望文章能够帮你解决设计java.util.regex.Pattern和java.util.regex.Matcher的好处是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。