在检查PatternLayout的javadoc时,我注意到它建议使用EnhancedPatternLayout。但是,它似乎做了几乎相同的事情。
主要区别有哪些,尤其是我需要注意的区别?
我也想知道他们为什么要单独上课而不是增强原班级。任何语法差异?
答案 0 :(得分:2)
检查documentation,解释了所有内容。 EnhancedPatternLayout
是PatternLayout
的增强版。它应该优先于PatternLayout
使用(与PatternLayout
的兼容性原因除外)。
PatternLayout包含一些在EnhancedPatternLayout中不存在的问题,尤其是在同步时。
答案 1 :(得分:2)
PatternLayout和EnhancedPatternLayout之间的主要区别在于format()方法。 PatternLayout依赖于它修改的名为sbuf
的成员字段,而EnhancedPatternLayout使用StringBuffer的私有实例。这意味着PatternLayout.format()调用在并发调用期间容易受到数据争用的影响,而并发的EnhancedPatternLayout.format()调用则不会。
答案 2 :(得分:0)
EnhancedPatternLayout将结果格式化为StringBuffer,而PatternLayout将结果格式化为String。