在Java中,是一个可分配给已声明变量iff的表达式.它可以作为用相同类型声明的参数传递



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

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

然而,扫描JLS 8.4.1,在处理方法参数时没有提及分配。JLS 5.3同样没有提及可转让性,至少对该节进行了初步解读。

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

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

编辑:

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

为了更清楚地表述,是否有一个值(或返回值的函数调用/语言构造的返回值),可以分配给:

FooType ft;

或传递给

myMethod(FooType ft){ ...

但不是两者都对于FooType的一些类型选择(这将作为反例并使答案为"否")。

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

最新更新