这是正确的,并且是设计使然。就像无法获取不可序列化的对象并使其在实例化之后可序列化一样,一旦创建了lambda,则将设置其可序列化性。
如果lambda的目标类型是可序列化的(并且其捕获的参数是可序列化的),则可序列化。您的第一个示例是可序列化的,因为目标类型是交集(Runnable&Serializable)。您的两次转换尝试
r均失败,因为在两种情况下
r都是无法序列化的捕获变量,因此生成的lambda表达式/方法引用不可序列化。(绑定方法引用的接收者充当捕获的变量。)

这是正确的,并且是设计使然。就像无法获取不可序列化的对象并使其在实例化之后可序列化一样,一旦创建了lambda,则将设置其可序列化性。
如果lambda的目标类型是可序列化的(并且其捕获的参数是可序列化的),则可序列化。您的第一个示例是可序列化的,因为目标类型是交集(Runnable&Serializable)。您的两次转换尝试
r均失败,因为在两种情况下
r都是无法序列化的捕获变量,因此生成的lambda表达式/方法引用不可序列化。(绑定方法引用的接收者充当捕获的变量。)