From 059a78ab2298f6e7983099ddb64fe113c98ccc00 Mon Sep 17 00:00:00 2001 From: isXander Date: Tue, 26 Sep 2023 23:06:38 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Improve=20screen=20process?= =?UTF-8?q?or=20factory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controlify/screenop/ScreenProcessorFactory.java | 11 +++++++---- .../controlify/screenop/ScreenProcessorProvider.java | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/dev/isxander/controlify/screenop/ScreenProcessorFactory.java b/src/main/java/dev/isxander/controlify/screenop/ScreenProcessorFactory.java index 1818213..f128113 100644 --- a/src/main/java/dev/isxander/controlify/screenop/ScreenProcessorFactory.java +++ b/src/main/java/dev/isxander/controlify/screenop/ScreenProcessorFactory.java @@ -8,7 +8,7 @@ import java.util.function.Function; @SuppressWarnings("unchecked") public final class ScreenProcessorFactory { - private static final Map, Function>> factories = new HashMap<>(); + private static final Map, Factory> factories = new HashMap<>(); private ScreenProcessorFactory() { } @@ -19,14 +19,17 @@ public final class ScreenProcessorFactory { screenClass = (Class) screenClass.getSuperclass(); } - return (ScreenProcessor) factories.getOrDefault(screenClass, ScreenProcessorFactory::createDefault).apply(screen); + return ((Factory) factories.getOrDefault(screenClass, ScreenProcessorFactory::createDefault)).apply(screen); } - public static void registerProvider(Class screenClass, Function> factory) { - factories.put(screenClass, (Function>) factory); + public static void registerProvider(Class screenClass, Factory factory) { + factories.put(screenClass, factory); } private static ScreenProcessor createDefault(T screen) { return new ScreenProcessor<>(screen); } + + public interface Factory extends Function> { + } } diff --git a/src/main/java/dev/isxander/controlify/screenop/ScreenProcessorProvider.java b/src/main/java/dev/isxander/controlify/screenop/ScreenProcessorProvider.java index 9b1b9db..3130403 100644 --- a/src/main/java/dev/isxander/controlify/screenop/ScreenProcessorProvider.java +++ b/src/main/java/dev/isxander/controlify/screenop/ScreenProcessorProvider.java @@ -12,7 +12,7 @@ public interface ScreenProcessorProvider { return ((ScreenProcessorProvider) screen).screenProcessor(); } - static void registerProvider(@NotNull Class screenClass, @NotNull Function> factory) { + static void registerProvider(@NotNull Class screenClass, @NotNull ScreenProcessorFactory.Factory factory) { ScreenProcessorFactory.registerProvider(screenClass, factory); } }