La mia domanda iniziale era un duplicato esatto di this one; cioè, perché questa interfaccia ha un criterio di conservazione del runtime.In che modo @FunctionalInterface influenza il comportamento di runtime della JVM?
Ma la risposta accettata non mi soddisfa del tutto, per due motivi:
- il fatto che questa interfaccia è
@Documented
ha (credo) nulla a che fare con esso (anche se il motivo per cui@Documented
ha una ritenzione di runtime la politica è un mistero anche per me); - anche se molte interfacce funzionali "sarebbero" esistevano in Java prima di Java 8 (ecc.), Ciò non impedisce che vengano utilizzate come "sostituti" (ad esempio, è possibile perfavore usa uno
DirectoryStream.Filter
come sostituto aPredicate
se tutto ciò che fai è filtrare suPath
, per esempio).
Tuttavia, ha questa ritenzione. Ciò significa che deve influenzare il comportamento della JVM in qualche modo. Come?
Questa è una conclusione molto strana che avere il criterio di conservazione 'RUNTIME' implica che abbia un'influenza sul comportamento della JVM. Dato che sai già che puoi implementare interfacce funzionali con espressioni lambda, anche quando non hanno quell'annotazione (suppongo che tu lo sappia), quale tipo di cambiamento nel comportamento di JVM dovrebbe avere qualcosa di completamente opzionale? – Holger
@Holger è esattamente quello che mi chiedevo, da qui la domanda. Ma alla fine sembra che non faccia alcuna differenza ... – fge