• Как сделать правильный выбор между C# и Java?

    Sputterspark
    @Sputterspark
    В далеком прошлом, я занимался пустой тратой времени. А именно - выбором языков программирования.

    И продолжаешь этим заниматься.
    Ответ написан
    Комментировать
  • Оператор двоеточия (::) java, какой принцип работы?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Прежде всего, квадраточие - это оператор, а не функция. Поэтому никаких аргументов он не принимает. У него есть левая часть выражения и правая часть выражения, как у оператора точка, например. Оператор точка позволяет получить значение поля, указанного в правой части выражения, класса, указанного в левой - SomeClass.someField Так же и квадроточие позволяет получить ссылку на метод, указанный в правой части, класса, указанного в левой.

    Компилятор выводит тип ссылки из контекста и приводит её к соответствующему функциональному интерфейсу. В частности метод forEach принимает Consumer<? super T>, к нему и будет приведена ссылка на метод println, возвращаемая выражением System.out::println

    На уровне виртуальной машины, как ссылки на методы, так и лямбды - это создаваемые в рантайме прокси-классы. Пример их генерации и композиции вы можете увидеть здесь.
    Ответ написан
    Комментировать