2014-09-10 1 views
4

Этот вопрос был вдохновлен Java 8: Is it possible to assign a method reference to a variable?.В Java это выражение, присваиваемое объявленной переменной iff. он может быть передан как параметр, объявленный с тем же типом?

В настоящее время я понимаю (который не может быть полностью прав), вызов, скажем fooMethod(FooType ft) в fooMethod(myFooInstance) вызывает неявное назначение myFooInstance к локальной переменной внутри тела fooMethod «s, чье имя ft, и тип которого объявляется как FooType. Ясно, что в этом случае я мог бы также присвоить поле или локальную переменную, тип которой FooType, например, в классе с объявленным полем private FooType fooField с использованием this.fooField = myFooInstance;.

Однако при сканировании JLS 8.4.1 нет упоминания о назначении при работе с параметрами метода. JLS 5.3 аналогичным образом не упоминает о назначении, по крайней мере, с начальным чтением этого раздела.

Итак, являются ли правила для типичной типизации и используют их как в строгом вызове, так и в контексте назначения? (или, является ли значение, присваиваемое параметру метода , если и только если присваивается переменной поля/локальной переменной с тем же объявлением?)

(в том же декларации подразумевается параметр field/local /, который равен не является окончательным, и видимость/доступность полей не учитывается для целей данного вопроса)

Edit:

FooType не обязательно конкретный класс, но инструмент Перефразируя мой вопрос. Это может быть функциональный интерфейс, простой интерфейс, прокси-класс, примитив и т. Д.

Чтобы немного перефразировать, есть ли значение (или возвращаемое значение конструктора функций/языка, возвращающее значение) , которые могут быть назначены:

FooType ft; 

или переданы

myMethod(FooType ft){ ... 

, но не как для некоторые выбор типа для FooType (который будет выступать в качестве контрпример а и ответьте «нет»).

+0

Включая небольшой демонстрационный футляр вместо простого объяснения, было бы хорошо. – user2864740

+1

@ user2864740 Я ищу, чтобы найти существование или отсутствие такой ситуации, когда назначение переменной не означает возможность передать это значение вместо метода или наоборот. У меня нет конкретного примера, так как мой вопрос пытается найти, существует ли он или нет. – hexafraction

+0

Я думаю, вы должны уточнить, что вы просите. Даже если код не является синтаксически правильным, вы должны показать, что именно вы просите. Я вижу две или три разные (очень разные) вещи, которые вы подразумеваете, и я не уверен, каков ваш реальный вопрос. Раздел 15.12.4.5 JLS рассказывает об активационных кадрах и копирует значения параметров, если это все, что вы ищете. – markspace

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^