PropertyParser源码

这个类是在解析node节点属性的值时看到的。
成员变量:

field.png

好像没什么特别的,定义了几个静态不可变的String。
构造函数:

constructor.png

虽然它什么也没做,但是我们看到了私有化,说明这个类要么提供工厂方法创建对象,要么就无法通过常规方法创建对象。

list.png

看到这里发现:就剩下一个静态方法和内部类
先看下内部类吧,静态方法肯定会调用这个内部类的。
好吧,接着先看下内部类的成员变量:

inner_class_field.png

接下来依旧是构造函数


inner_class_Constructor.png

目的肯定也是给成员变量赋值,variables没什么好说的直接赋值,另外两个成员赋值调用了对应的方法getPropertyValue。

getPropertyValue.png

这个方法的用途很明显,就是你外部传了properties对象给我,那么我就从你提供的properties对象里取,取不到就用默认值。如果你没传,不好意思,我就用默认值了。
我们就知道了这个构造方法你赋值的过程。这里的传参都是使用的外部类成员变量。默认的enableDefaultValue是false。defaultValueSeparator是“:”。
内部类最关键的代码到了:(别问为什么知道是最重要的,因为它最长)
handleToken.png

目前还不知道他的用途是什么,大概的逻辑处理是:
1、传参的时候没有提供variables对象,那么处理的时候前后加上固定格式返回。
2、传入了variables,但是没有variables你没有put固定的key为true。那就意味着,处理的是variables的一个key,直接去找到对应的value返回即可。
3、设置了enableDefaultValue为true。按照提供的分隔符(当然可能没传就用默认的)进行拆分,把分隔符后的作为默认值,如果能取到key对应的值就返回,否则返回默认值。
至此,我们就看完了内部类,需要看看外部类的最后一个方法了。

parse.png

就简单说下吧,GenericTokenParser是用来保证字符串是被${}包围着的。那这个parse的方法最终究是要返回被${}包围的值。string可能就是值,也可能是key,需要到variables里去取对应的值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容