Co to jest funkcjonalny interfejs Java 8 dla metody, która nic nie pobiera i nic nie zwraca?
To znaczy odpowiednik C # bez parametrów Action
z void
typem zwracanym?
java
java-8
java-stream
Miguel Gamboa
źródło
źródło
Runnable
specyfikacja interfejsu wskazuje, że ma on udostępniaćThread
klasie wykonywalny kod . Nie wydaje mi się właściwe używanieRunnable
go tam, gdzie nie jest przeznaczone do wykonania przez wątek; wydaje się mylące.Runnable
jest zdefiniowany jako a,FunctionalInterface
ponieważ spełnia specyfikację funkcjonalnego interfejsu i może być utworzony przy użyciu składni lambda. Dlaczego nie stworzyć własnego funkcjonalnego interfejsu? zobacz Runnable , zobacz FunctionalInterfaceRunnable
jest opatrzony adnotacją@FunctionalInterface
i (ii) nawet w kontekście wyrażenia lambda zostanie wykonany na wątku: wątku, w którym jest uruchamiana lambda, który może być bieżącym wątkiem ...Runnable
ma ono służyć do tego celu, a nie tylko do wątków.Po prostu stwórz własne
i używaj go w ten sposób
i wyjście
źródło
@FunctionalInterface zezwala tylko na metodę abstrakcyjną metody Stąd możesz utworzyć instancję tego interfejsu z wyrażeniem lambda jak poniżej i możesz uzyskać dostęp do elementów interfejsu
źródło