Skip to content

Instantly share code, notes, and snippets.

View RayStarkMC's full-sized avatar

Yuma Otani RayStarkMC

View GitHub Profile
@RayStarkMC
RayStarkMC / PhantomBuilderSample.java
Created November 6, 2020 12:00
幽霊型を用いた不変オブジェクトの型安全な不変ビルダのサンプルコード
public class PhantomBuilderSample {
public static class Data {
private final int field1;
private final int field2;
private final int field3;
private final int optField1;
private final int optField2;
private Data(Builder<OK, OK, OK> builder) {
@RayStarkMC
RayStarkMC / TypesafeBinaryVisitorSample.java
Created November 7, 2020 09:19
Visitorパターンの2変数以上への拡張
public class TypesafeBinaryVisitorSample {
public static abstract class Type implements Acceptor {
private Type(){}
public static final class Type1 extends Type {
@Override
public <R> R accept(Visitor1<R> visitor1) {
return visitor1.visit(this);
}
}
@RayStarkMC
RayStarkMC / ComposerNF1.java
Last active November 28, 2020 00:36
巨大な合成関数を生成した時のスタックオーバーフロー対策
package raystark.eflib.function.notnull.composer;
import org.jetbrains.annotations.NotNull;
import raystark.eflib.function.notnull.NF1;
import raystark.eflib.util.OneShotState;
import java.util.Deque;
import java.util.LinkedList;
public final class ComposerNF1<T1, R> {
@RayStarkMC
RayStarkMC / Kotlinで作るST.md
Last active September 4, 2023 14:58
Kotlinで作れなかったST

Kotlinで作るST

//TODO 解説