Нашхорн: Странное возвращение посылок

В движке Nashorn Java, когда вы оцениваете код, если вы делаете это

var e = Packages.org.bukkit["event"]

е будет нулевым.

Но одна вещь, которую я обнаружил, это то, что если я сделаю это

var anothervar = Packages.org.bukkit.event
var e = Packages.org.bukkit["event"]

e (как и для othervar) будет пакет org.bukkit.event.

Почему у Nashorn это так, после того как я получу доступ к пакету с точечной нотацией, он начнет работать с нотацией скобок?


person Ivan    schedule 14.01.2014    source источник
comment
Не используйте изображение, чтобы подвести итог. Вставьте текст в свой вопрос.   -  person meagar    schedule 14.01.2014
comment
@meagar Я только что отредактировал это. Я нахожу это действительно ... глупым (из-за отсутствия лучшего слова), как люди здесь голосуют против вопроса только потому, что он сформулирован неправильно. Они могут просто помочь ему, либо предложив правки, либо прокомментировав его (как и вы), вместо того, чтобы просто проголосовать за него.   -  person Ivan    schedule 15.01.2014
comment
Э-э, потому что это одна из основных целей минусов. Наведите указатель мыши на стрелку вниз на любом вопросе, и вы увидите, что его неясность является одним из основных критериев для отрицательного голосования. Голосование против не означает, что вы отстой или заблудились, оно выражает мнение, что ваш вопрос либо плохо написан, либо бесполезен, либо не требует достаточных усилий, либо их комбинация. И вы получили только один минус. Во всяком случае, вопрос значительно улучшился после редактирования. Я только что проголосовал за четвертое повторное открытие, еще одно, и оно будет вновь открыто.   -  person Adi Inbar    schedule 15.01.2014
comment
@AdiInbar Я получил два отрицательных голоса, но это ни здесь, ни там. И хотя я вижу критерии, в моих идеалах я считаю, что их следует использовать ПОСЛЕ того, как ОП прочитает комментарии о том, что они неясны, но все равно отказывается их менять. Я за то, чтобы дать людям шанс.   -  person Ivan    schedule 15.01.2014
comment
1. Голоса против предназначены как мнение о качестве вопроса во время голосования, а не как наказание за плохое поведение. Я действительно думаю, что некоторые люди слишком быстры, чтобы проголосовать против, но я не согласен с тем, что если что-то заслуживает проголосовать против, голосование не должно быть подано до тех пор, пока у автора не будет возможности ответить на комментарий. Идея требовать комментариев для отрицательных голосов обсуждалась и была полностью отвергнута. Я не утверждаю, что ваш вопрос заслуживает отрицательных голосов, просто я не согласен с этим принципом. 2. На момент написания этой статьи вы получили один голос против и один голос за.   -  person Adi Inbar    schedule 15.01.2014
comment
Также обратите внимание, что отрицательные голоса не являются постоянными. Их можно отозвать или даже преобразовать в положительные, если вопрос будет улучшен (хотя отрицательные не всегда возвращаются к вопросу). (Для справки, единственный голос, который я отдал по этому вопросу, — это повторное открытие.)   -  person Adi Inbar    schedule 15.01.2014
comment
@AdiInbar 1. Я понимаю. 2. Да, но это пока. Изначально было два минуса.   -  person Ivan    schedule 15.01.2014
comment
@AdiInbar Я знаю, что голоса могут быть изменены, но часть в скобках вашего второго предложения, хотя отрицательные голоса не всегда возвращаются к вопросу, - это проблема, с которой я столкнулся. Я не был здесь достаточно долго, чтобы почувствовать здесь людей, но, судя по моему опыту в других местах, это случается довольно часто.   -  person Ivan    schedule 15.01.2014
comment
Если изначально было два отрицательных голоса, это тот случай, о котором я говорю. Один из противников, должно быть, отозвал свой голос после того, как вы улучшили вопрос. Видите, система работает. :)   -  person Adi Inbar    schedule 15.01.2014
comment
@AdiInbar Я знаю, я знаю :)   -  person Ivan    schedule 15.01.2014
comment
Хорошо, +1 за то, что откликнулся на совет и превратил это в хороший вопрос.   -  person Adi Inbar    schedule 15.01.2014


Ответы (1)


Судя по тому, что я вижу, это ошибка Java 8, поэтому в Между тем, хакерский обходной путь может заключаться в оценке пакета с точечной нотацией.

e.g.

eval("Packages.org.bukkit."+"event.server"); //or whatever variable it may be

ИЗМЕНИТЬ

Ошибка была исправлена, теперь она должна работать.

person Ivan    schedule 14.01.2014