All Projects β†’ memoizr β†’ retro-optional

memoizr / retro-optional

Licence: other
A backport of Java8 optionals for Java7

Programming Languages

java
68154 projects - #9 most used programming language
kotlin
9241 projects

Projects that are alternatives of or similar to retro-optional

learn-java8
πŸ’–γ€Šθ·ŸδΈŠ Java 8》视钑课程源码
Stars: ✭ 1,289 (+7956.25%)
Mutual labels:  java8-optionals
polyfill-unserialize
Backports unserialize options introduced in PHP 7.0 to older PHP versions.
Stars: ✭ 33 (+106.25%)
Mutual labels:  backport
ElvUI
ElvUI for World of Warcraft - Vanilla (1.12.1)
Stars: ✭ 67 (+318.75%)
Mutual labels:  backport
django-jsonfield-backport
Backport of the cross-DB JSONField model and form fields from Django 3.1.
Stars: ✭ 36 (+125%)
Mutual labels:  backport
BackportCpp
Library of backported modern C++ types to work with C++11
Stars: ✭ 53 (+231.25%)
Mutual labels:  backport
android-retrofix
Backports Java 8 APIs (java.util.Optional, java.util.function, java.util.stream, java.util.concurrent.CompletableFuture, java.time) to Android below API 24 (Android 7.0 Nougat)
Stars: ✭ 51 (+218.75%)
Mutual labels:  backport
ElvUI-5.4.8
ElvUI for World of Warcraft - Mists of Pandaria (5.4.8)
Stars: ✭ 20 (+25%)
Mutual labels:  backport
hippie68.github.io
This is sleirsgoevy's PS4 jailbreak for firmware 7.02/7.5x, upgraded with additional features and more payloads.
Stars: ✭ 35 (+118.75%)
Mutual labels:  backport

Build Status codecov GitHub license

Retro-Optional

A backport of Java8 monad optionals for Java7.

Example: Let's say we have an instance of a class A which can be nullable, and we're interested in getting the result of a chain of nested function calls, which eventually will result in a boolean. Every intermediate step may fail and return a null. To get to the end result without optionals we'd have to do multiple null checks:

boolean result = a != null &&
      a.getB() != null &&
      a.getB().getC() != null &&
      a.getB().getC().isD();

But by converting everything to return monadic optionals, the syntax can be streamlined a bit:

boolean result = a.flatMap(A::getB)
      .flatMap(A::getC)
      .filter(x -> x.isD())
      .isPresent();

For more examples of how to use Java 8 optional types, you can refer to this excellent article: http://www.nurkiewicz.com/2013/08/optional-in-java-8-cheat-sheet.html

Get it

 repositories {
        // ...
        maven { url "https://jitpack.io" }
  }
 dependencies {
        compile 'com.github.memoizr:retro-optional:0.2.0'
  }

Copyright 2015 memoizr

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].