Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Java

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
funkyjfunctional-core-test
funkyjfunctional-core
funkyjfunctional-demo
funkyjfunctional-fest-assert
funkyjfunctional-functionaljava
funkyjfunctional-guava
funkyjfunctional-java
funkyjfunctional-wicket
releases/info/piwai/funkyjfunctional
snapshots/info/piwai/funkyjfunctional
src/etc
.gitignore
LICENSE.txt
README.md
javadoc_screenshot.png
pom.xml

README.md

Are you Funky?

There is no such thing as functional programming in Java, but sometimes we emulate it using anonymous classes.

FunkyJFunctional (aka FJF) provides a new way to do functional programming in Java, using some Java syntactic sugar: method local class declarations and init blocks.

FJF integrates with many different frameworks. If not already available, feel free to implement a new funky module for the framework you love!

A few examples with different frameworks:

public void sayHelloInExecutor(ExecutorService executor) {
    class Hello {{ System.out.println("Hello Funky World"); }}
    executor.execute(withRun(Hello.class));
}
  • Guava, with a funky Predicate (Guava is the former google collections)
public Iterable<User> filterMinors(Iterable<User> users) {
    class Minor extends Pred<User> {{ out = in.getAge() < 18; }}
    return filter(users, withPred(Minor.class));
}
public static List<Integer> factors(final int number) {
    class Factor extends FF<Integer, Boolean> {{ out = number % in == 0; }}
    return range(1, number + 1).filter(withF(Factor.class, number));
}
@Test
public void getMajorUsers_returns_no_minor_User() {
    List<User> majorUsers = userService.getMajorUsers();
    class Minor extends Cond<User> {{ out = in.getAge() < 18; }}
    assertThat(majorUsers).noneIs(Minor.class);
}
class FortyTwo extends AROM<String> {{ out = "42"; }}
AbstractReadOnlyModel<String> readOnlyModel = withAROM(FortyTwo.class);
class BtonClick extends ActL {{ doSomething(e); }}
jButton.addActionListener(withActL(BtonClick.class));

Sounds funky? We think it is ;-).

Informations

Help

Javadoc Google Group

Looking for the documentation? Have a look at the Funky javadoc!

Any question? Please ask them on the dedicated Google Group.

Continuous Integration

FJF has continuous integration thanks to CloudBees DEV@Cloud free plan for FOSS projects.

Built on CloudBees

Build time trend & Test Result Trend

Build Trend Test result trend

Something went wrong with that request. Please try again.