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

在Java中,是可分配给已声明变量iff的表达式。它可以作为使用相同类型声明的参数传递?,java,variable-assignment,jls,Java,Variable Assignment,Jls,这个问题的灵感来自于 正如我目前所理解的(这可能并不完全正确),调用fooMethod(FooType ft)AsfooMethod(myfoodinstance)会导致myfoodinstance隐式赋值给fooMethod主体中的局部变量,其名称为ft,其类型声明为FooType。显然,在这种情况下,我还可以使用this.fooField=myfoodinstance将myfoodinstance赋值给类型为FooType的字段或局部变量,例如,在一个类中,使用声明了字段private Fo

这个问题的灵感来自于

正如我目前所理解的(这可能并不完全正确),调用
fooMethod(FooType ft)
As
fooMethod(myfoodinstance)
会导致
myfoodinstance
隐式赋值给
fooMethod
主体中的局部变量,其名称为
ft
,其类型声明为
FooType
。显然,在这种情况下,我还可以使用
this.fooField=myfoodinstance将
myfoodinstance
赋值给类型为
FooType
的字段或局部变量,例如,在一个类中,使用
声明了字段
private FooType fooField

然而,在扫描JLS 8.4.1时,在处理方法参数时没有提及赋值。JLS 5.3同样未提及可转让性,至少在该节的初始阅读中如此

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

(同一声明意味着字段/本地/参数不是最终的,在本问题中不考虑字段的可见性/可访问性)

编辑:

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

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

FooType ft;
或者传给

myMethod(FooType ft){ ...

但对于FooType的某些类型选择(这将作为反例,并使答案为“否”)而言,两者并非都是如此。

您需要进行比较并找出差异。我看不到任何相关的情况。

包括一个小的演示案例,而不仅仅是解释它,这将是一件好事。@user2864740我正在寻找这种情况的存在或不存在,在这种情况下,对变量的赋值并不意味着能够将该值传递给方法,反之亦然。我没有一个具体的例子,因为我的问题本身就是想找出一个是否存在。@markspace我在问一件具体的事情(用一些逻辑上等价的方式表达),即,我可以作为参数传递的值是否总是可以分配给同一类型的变量,反之亦然。你需要比较和找出差异。我看不到任何相关的东西。旧的JLS(或者JVM规范,已经有一段时间了)将参数类型称为“可分配”——作为类型X传递的parm必须满足“可分配”到类型X的变量的要求。我认为泛型中的一些扭曲或类似情况可能会在该规则中引入漏洞,但基本原则是正确的。