Skip to content

Instantly share code, notes, and snippets.

View RayStarkMC's full-sized avatar

RayStark RayStarkMC

View GitHub Profile
@RayStarkMC
RayStarkMC / When.java
Last active September 16, 2019 11:56
JavaでKotlinのwhenライクなの書いてみたけど使いにくかったよ 素直に3項演算子やswitchを使おうと思ったよ
import java.util.Arrays;
import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
public final class When {
private When() {}
@RayStarkMC
RayStarkMC / ClosureTest.java
Last active November 16, 2019 13:08
束縛された変数どうなってるん?ってことで可変クラス作って中身を変更してみました。
//パッケージ略
import java.util.function.Supplier;
/**
* クロージャテスト
*/
public class ClosureTest {
/**
* 可変データクラス
@RayStarkMC
RayStarkMC / Pipeline.java
Last active June 26, 2020 21:52
任意のオブジェクトを戻り値thisにするパターン化するためのラッパー
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
public class Pipeline<T, R> {
private final T value;
Object lastReturn;
private Pipeline(T value) {
this.value = value;
@RayStarkMC
RayStarkMC / Tuple2.java
Created October 8, 2020 22:11
IDEAからのGistテスト
import org.jetbrains.annotations.NotNull;
import java.util.function.Function;
public interface Tuple2<T1, T2> {
@NotNull
T1 t1();
@NotNull
T2 t2();
@RayStarkMC
RayStarkMC / CaptureMethodExample.java
Created October 11, 2020 07:22
キャプチャメソッドの使用例
public static void main(String[] args) {
Function<?, ?> f = Function.identity();
Object obj = new Object();
// これは出来ない
// f.apply((?)obj);
//これは出来る
Object obj2 = captureMethod(f, obj);
@RayStarkMC
RayStarkMC / FizzBuzz.java
Last active October 12, 2020 07:00
FizzBuzzデモンストレーション
import raystark.fizzbuzz.FizzBuzzRule;
import raystark.fizzbuzz.FizzBuzzer;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
import static java.util.stream.Collectors.toList;
/**
@RayStarkMC
RayStarkMC / ExtendedFunctionLibrary-1.2.1.pom
Created October 13, 2020 07:04
GitHub Packagesにアップロードできないプロジェクトのpomファイル、何か不味いんだろうか…
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- This module was also published with a richer model, Gradle metadata, -->
<!-- which should be used instead. Do not delete the following line which -->
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
<!-- that they should prefer consuming it instead. -->
<!-- do_not_remove: published-with-gradle-metadata -->
<modelVersion>4.0.0</modelVersion>
<groupId>raystark.eflib</groupId>
@RayStarkMC
RayStarkMC / SampleTry2.java
Created October 24, 2020 13:02
Try型による静的例外処理の例
import raystark.eflib.exhandler.Try2;
public class SampleTry2 {
//チェック例外型
static class LargerThan10Exception extends Exception {}
static class LargerThan20Exception extends Exception {}
static class MiddleException extends Exception {}
//可変データ
private static int value;
@RayStarkMC
RayStarkMC / MethodResolveIssueSample.java
Created October 25, 2020 04:50
ジェネリッククラスでstaticメソッドの参照に失敗する問題の最小コード
import java.util.function.Consumer;
public class MethodResolveIssueSample {
static class NonGenericClass {
static <T> void f() {
h(NonGenericClass::<T>methodToBeReferenced);
}
static <T> void methodToBeReferenced(T t1) {}
}
@RayStarkMC
RayStarkMC / GenericMethodReferenceIssueSample.java
Created October 25, 2020 05:26
メソッド参照時の型指定が意味を成さない問題のサンプルコード
import java.util.function.UnaryOperator;
public class GenericMethodReferenceIssueSample {
static <T> T genericMethod(T t) {
return t;
}
static <T> UnaryOperator<T> of(UnaryOperator<T> t) {
return t;
}