在Java中,是一个可赋值给声明的变量iff的表达式。 它可以作为使用相同类型声明的参数传递吗?

这个问题的灵感来自Java 8:是否可以为变量分配方法引用?

正如我目前所理解的那样(可能不完全正确),调用fooMethod(FooType ft)作为fooMethod(myFooInstance)会导致fooMethod(myFooInstance)隐式赋值给myFooInstance的局部变量,其名称为ft ,并且其类型声明为FooType 。 显然,在这种情况下,我还可以将myFooInstance分配给类型为FooType的字段或局部变量,例如,在具有声明字段private FooType fooField ,使用this.fooField = myFooInstance;

但是,扫描JLS 8.4.1时,在处理方法参数时没有提及赋值。 类似地,JLS 5.3没有提到可分配性,至少对该部分的初始读数是这样。

那么,变量类型的规则是在严格调用和赋值上下文中使用相同的吗? (或者, 当且仅当它可以赋值给具有相同声明的字段/局部变量时,它是否可赋值给方法参数?)

(相同的声明意味着字段/本地/参数不是最终的,并且出于此问题的目的不考虑字段的可见性/可访问性)

编辑:

FooType不一定是具体的类,而是一个表达我的问题的工具。 它可以是function接口,普通旧接口,代理类,原语等。

要清楚地改写一下,是否有一个值(或函数调用/语言结构返回值的返回值),可以分配给:

 FooType ft; 

或传递给

 myMethod(FooType ft){ ... 

对于FooType的某种类型选择(这将作为反例并使答案为“否”) 并非两者兼而有之

您需要比较5.2分配转换和5.3方法调用转换的差异。 我看不到任何相关的东西。