这个类是在解析node节点属性的值时看到的。
成员变量:
好像没什么特别的,定义了几个静态不可变的String。
构造函数:
虽然它什么也没做,但是我们看到了私有化,说明这个类要么提供工厂方法创建对象,要么就无法通过常规方法创建对象。
看到这里发现:就剩下一个静态方法和内部类
先看下内部类吧,静态方法肯定会调用这个内部类的。
好吧,接着先看下内部类的成员变量:
接下来依旧是构造函数
目的肯定也是给成员变量赋值,variables没什么好说的直接赋值,另外两个成员赋值调用了对应的方法getPropertyValue。
这个方法的用途很明显,就是你外部传了properties对象给我,那么我就从你提供的properties对象里取,取不到就用默认值。如果你没传,不好意思,我就用默认值了。
我们就知道了这个构造方法你赋值的过程。这里的传参都是使用的外部类成员变量。默认的enableDefaultValue是false。defaultValueSeparator是“:”。
内部类最关键的代码到了:(别问为什么知道是最重要的,因为它最长)
目前还不知道他的用途是什么,大概的逻辑处理是:
1、传参的时候没有提供variables对象,那么处理的时候前后加上固定格式返回。
2、传入了variables,但是没有variables你没有put固定的key为true。那就意味着,处理的是variables的一个key,直接去找到对应的value返回即可。
3、设置了enableDefaultValue为true。按照提供的分隔符(当然可能没传就用默认的)进行拆分,把分隔符后的作为默认值,如果能取到key对应的值就返回,否则返回默认值。
至此,我们就看完了内部类,需要看看外部类的最后一个方法了。
就简单说下吧,GenericTokenParser是用来保证字符串是被${}包围着的。那这个parse的方法最终究是要返回被${}包围的值。string可能就是值,也可能是key,需要到variables里去取对应的值。