java接口定义前面加static修饰符

今天看log4j的接口文档,看到有个接口定义前面加了static修饰符,不明白为什么要加。
log4j的ThreadContext.ContextStack接口定义如下:
在这里插入图片描述
于是查看了Java规范中的定义,发现嵌套接口其实隐含的含义就是static的,也就是说,成员接口或者局部接口就是static的。
在定义成员接口前面可以加static。当然,加这个static也是多余的,加与不加含义相同。
而在定义局部接口时,前面不能加static修饰符,加了会编译报错。

java规范中的描述如下:
https://docs.oracle.com/javase/specs/jls/se20/html/jls-9.html#jls-9.1
在这里插入图片描述
代码验证:
1)下面的两种代码写法都正确:
在这里插入图片描述
在这里插入图片描述

2)但如果在局部接口定义前面加static,就会报错:
在这里插入图片描述