是否指定匿名类的数量从1开始的任何地方?

Bjö*_*lex 4 java specifications class

这个对另一个问题的回答表明,作为通过反思找到匿名类的一种解决方法,只需尝试所有名称,从开始...$1计算直到找不到更多.这是保证找到所有内部类,还是有可能从0开始或者某些数字被遗漏(无论出于何种原因)?

ass*_*ias 6

JLS 13.1指定:

类或接口必须以其二进制名称命名,该名称必须满足以下约束:

  • 顶级类型(第7.6节)的二进制名称是其规范名称(第6.7节).
  • [...]
  • 匿名类的二进制名称(第15.9.5节)由其直接封闭类型的二进制名称组成,后跟$,后跟非空数字序列.

所以从理论上讲,它不必从1开始,但它必须是EnclosingClass$NN是数字的地方.

  • 请注意,这也意味着通过`$ 1 ... $ n`扫描只会返回直接封闭的内部类.这在技术上是正确的,但在实践中人们会期望包含内部类的内部类,这需要几个嵌套的扫描轮次. (2认同)