Я предполагаю, что ваш вопрос звучит так: «Как javac знает, как вызвать parseInt здесь»?
Ваш фрагмент поврежден; дженерики отвалились. Ваш код не будет компилироваться, так как ссылка неоднозначна. Если вы добавите его обратно, он скомпилируется и будет работать как обычно:
Function<String, Integer> f = Integer::new;
Integer i = f.apply("100");
Забудьте новый синтаксис ::
или часть Function
; это красные селедки.
Итак, давайте сделаем это проще:
Integer i = new Integer("100");
Это действительно Java; в итоге я получу значение 100.
Это работает, потому что ... этот конструктор существует. Предполагается, что он будет действовать точно так же, как Integer.parseInt
с основанием 10 произведений, и не рекомендуется по двум веским причинам: [A] вызов new Integer()
вообще, с любым значением, не рекомендуется (используйте Integer.valueOf
), и [B] просто вызовите parseInt.