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); } }