Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Взгляните на http://www.javac.info/ .
кажется, что это - то, как это посмотрело бы:
boolean even = { int x => x % 2 == 0 }.invoke(15);
, где эти { int x => x % 2 == 0 }
бит является закрытием.
К сожалению, вы не найдете замыкания в Java 7. Если вы ищете более легкое решение для замыкания в java, просто посмотрите проект lambdaj:
Это действительно зависит от того, что представлено, и действительно , будет ли это представлено вообще. Существует много предложений по закрытию переменных размеров.
См. Java Alex Miller 7 страниц для предложений и различных сообщений в блоге.
Лично я хотел бы видеть закрытия - они красивы и невероятно полезны - но я боюсь, что некоторые предложения являются довольно волосатыми.
В ноябре 2009 года произошел неожиданный поворот по этому вопросу, и теперь замыкания будут добавлены в Java 7.
Закрытия (лямбда-выражения AKA) в Java 7 не происходили. Они были окончательно добавлены в первый выпуск Java 8 в 2014 году.
Это особенности Java 7 http://tech.puredanger.com/java7/#switch примеры очень полезны.
Обратите внимание, что "функциональный тип" является действительно типом в соответствии с предложением:
{int => boolean} evaluateInt; //declare variable of "function" type
evaluateInt = {int x => x % 2 }; //assignment
Я думаю, что существует все еще много дебатов, входящих относительно того, какой синтаксис будет в конечном счете использоваться. Я был бы на самом деле довольно удивлен, превращает ли это действительно его в Java 7 из-за всего этого.
У замыканий есть несколько серьезных крайних случаев. Я бы сказал, что замыкания являются гораздо более значительным изменением, чем дженерики, и у последних все еще есть ряд случайностей. например Библиотеки Java Collections не могут быть написаны / скомпилированы без предупреждений.
закрытия будут раздражающе многословными, если не будет какого-то типа вывода типов... :(