Ich weiß in Scala und vielen anderen funktionalen Sprachen gibt es Monaden, die meist nur eine Schnittstellenrealisierung ist (zum Beispiel in Scala mit FlatMap [T] und Unit [T] Methoden) gibt es irgendwelche Java-style Schnittstellen, die ein sein könnten Monade?Was ist in Java monad analog?
Antwort
Es gibt zwei Probleme mit Monaden in Java darstellt:
flatMap
muss sich auf eine Funktion arbeiten, die die (gleiche) spezifischen Monade zurückgibt und Java-Typ System, das nicht zum Ausdruck bringen können.
unit
ist eine Art eine statische Methode in Java, da es eine Monade Instanz von einem allgemeinen Wert erstellt. Java 8 hat statische Methoden auf Schnittstellen, aber eine abstrakte Monad-Schnittstelle kann die Implementierung nicht kennen, also müssen Sie eine Factory-Methode woanders verwenden (oder einfach einen Konstruktor verwenden).
Als @AlexeyRomanov vorgeschlagen, können Sie bestimmen Monaden implementieren (zum Beispiel eine Option
Schnittstelle machen), aber das abstrakte Konzept einer Monade ist nicht möglich, in Java. Dies bedeutet natürlich, dass Sie nicht all die nützlichen Funktionen erstellen können, die für jede Monade funktionieren.
Nein, weil die Monad-Schnittstelle sogenannte höher-kinded Typen benötigt, die es in Java nicht gibt. Natürlich können Sie viele (nicht alle) spezifische Monaden in Java implementieren.
- 1. Was ist getCurrentLoggers Analog in log4j2
- 2. Was ist Linux analog zu WIN32_FIND_DATA Struktur
- 3. Swift Analog von Java Thread.join()
- 4. Was ist ein analoges CryptSetProvParam (PP_SIGNATURE_PIN) Analog in CryptoAPI NG?
- 5. Was ist das Analog für .Net InvalidOperationException in Python?
- 6. Applicative ist zu monad, was X zu comonad ist
- 7. Was ist der Ada-Befehlszeilen-Redirector analog zu ">"?
- 8. Monad Transformatoren Monad Duplizierung
- 9. Was ist das nächste C++ - Analog zu Ruby's Rack?
- 10. Was ist das KnownType-Attribut analog für die XML-Serialisierung?
- 11. Was ist C# .Net Analog für Flash/Flex flash.utils.ByteArray?
- 12. QuickCheck Gen ist kein Monad
- 13. Was ist Spring Security `secured-annotations =" enabled "` analog für Java Config?
- 14. Haskell's Monad vs APL's Monad
- 15. Warum ist Identity Monad nützlich?
- 16. Mutex analog in SQL?
- 17. Datensatzaktualisierungsfehler in IO Monad?
- 18. Was ist ++ int in Java?
- 19. Was ist StampedLock in Java?
- 20. Was ist .intValue() in Java?
- 21. Was ist Serialisierung in Java?
- 22. Was ist in Java Objektkopf
- 23. Was ist Jar in Java?
- 24. Was ist lvmid in Java?
- 25. Was ist in Java strcpy?
- 26. MemoryStream analog in Python
- 27. Monad-Eigenschaft in Scala
- 28. faltlWithKey in monad
- 29. Prompt Monad in Purescript
- 30. Warum ist Monad der Sorte Set1?
Für welche Java-Version interessieren Sie sich? '<= 7' oder' 8'? –
@CostiCiudatu meist 7, aber 8 wäre gut genug für mich – Stepango