Термины «захват локальной переменной» и «захват статической переменной» не встречаются нигде в спецификации, поэтому их значение будет зависеть от того, кто придумал эти термины.
Наиболее вероятная интерпретация состоит в том, что «захват локальной переменной» означает просто «захват локальной переменной», а также «захват статической переменной» означает «захват статической переменной», другими словами, захват переменной, которая происходит с быть либо локальным, либо полем экземпляра, либо статическим полем, а затем, ответ довольно прост, природа переменных не меняется, когда вы помещаете лямбда-выражение в другую область.
В вашем примере someStaticVar
всегда является переменной static
, независимо от того, где вы к ней обращаетесь.
Непонятно, почему это различие важно для вас. Могут быть технические различия под капотом, которые намеренно не определены, следовательно, специфичны для реализации. Наиболее важным аспектом типа захваченных переменных будет то, что захват переменной экземпляра приведет к тому, что сгенерированный экземпляр сохранит ссылку на экземпляр. Но, во-первых, это не относится к локальным переменным или статическим переменным, во-вторых, это естественные отношения, и код, потенциально обращающийся к полю экземпляра, может предотвратить сборку мусора этого экземпляра.