Skip to content

Instantly share code, notes, and snippets.

@benjiman
benjiman / NamedParams.java
Created April 12, 2023 05:53
Named Parameters Example
package example;
public class NamedParamsExample {
public static void main(String... args) {
foo("Bob", 29);
foo(new FooParams(){{name="Bob"; age=30; }});
foo(Foo.name("Bob").age(31));
}
static void foo(String name, Integer age) {
package com.benjiweber.example;
import java.util.Random;
public class ExceptionUnions {
public static void main(String... args) {
try {
foo().check();
} catch (Eint eint) {
package com.benjiweber.example;
import org.junit.Test;
import java.util.Optional;
import static org.junit.Assert.assertEquals;
import static com.benjiweber.recordmixins.OptionalPatternMatchTest.None.*;
public class OptionalPatternMatchTest2 {
package com.benjiweber.example;
import org.junit.Test;
import java.util.Optional;
import static org.junit.Assert.assertEquals;
import static com.benjiweber.recordmixins.OptionalPatternMatchTest.None.*;
public class OptionalPatternMatchTest {
package com.benjiweber;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Supplier;
public class ConditionalFuture {
public static void main(String... args) throws ExecutionException, InterruptedException {
@benjiman
benjiman / gist:39cdff62bd4f9e0203e72ca84571bc6f
Created March 4, 2018 07:12
var and passing to methods
package example;
public class Example {
public static void main(String... args) {
var duck = (Quacks & Waddles) Mixin::create;
// this works as the intersection type is inferred.
methodThatDoesDucklikeThings(duck);
@benjiman
benjiman / Example.java
Created November 10, 2017 16:21
Anonymous Types with Java 10
package com.benjiweber.anontypes;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
import java.util.stream.Collectors;
import java.util.stream.Stream;