consideri si desidera mappare un CharSequence
ad un altro CharSequence
(quindi T = R = CharSequence
). Quali funzioni funzioneranno per te?
Function<Object, String> fn1 = Object::toString;
È buono per te? Sì, perché può richiedere qualsiasiCharSequence
(che è anche Object
) e convertirlo in String
(che è anche CharSequence
).
Function<CharSequence, StringBuilder> fn2 = StringBuilder::new;
È buono per te? Sì, perché può richiedere qualsiasiCharSequence
e convertirlo in StringBuilder
(che è anche CharSequence
).
Function<String, String> fn3 = String::trim;
È buono per te? No, perché non può prendere CharSequence
, solo alcuni di essi.
Così si può vedere che il primo argomento di tipo deve essere CharSequence
o qualsiasi superclasse, ma il secondo deve essere CharSequence
o qualsiasi sottoclasse.
fonte
2015-08-21 11:51:36
la differenza tra super e extends è stata risolta qui: http://stackoverflow.com/questions/1368166/what-is-a-difference-between-super-e-e-extends-e – gapvision
Conosco la differenza , ma mi chiedo perché lo abbiano fatto? – toandv
Se non ti dispiace la notazione diversa, ecco un discorso reale che lo spiega https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/Keynote-Domenity –