1
0
forked from Clones/Controlify

✏️ Improve screen processor factory

This commit is contained in:
isXander
2023-09-26 23:06:38 +01:00
parent 33dd5729ff
commit 059a78ab22
2 changed files with 8 additions and 5 deletions

View File

@ -8,7 +8,7 @@ import java.util.function.Function;
@SuppressWarnings("unchecked")
public final class ScreenProcessorFactory {
private static final Map<Class<? extends Screen>, Function<Screen, ScreenProcessor<?>>> factories = new HashMap<>();
private static final Map<Class<? extends Screen>, Factory<?>> factories = new HashMap<>();
private ScreenProcessorFactory() {
}
@ -19,14 +19,17 @@ public final class ScreenProcessorFactory {
screenClass = (Class<? extends Screen>) screenClass.getSuperclass();
}
return (ScreenProcessor<T>) factories.getOrDefault(screenClass, ScreenProcessorFactory::createDefault).apply(screen);
return ((Factory<T>) factories.getOrDefault(screenClass, ScreenProcessorFactory::createDefault)).apply(screen);
}
public static <T extends Screen> void registerProvider(Class<T> screenClass, Function<T, ScreenProcessor<? super T>> factory) {
factories.put(screenClass, (Function<Screen, ScreenProcessor<?>>) factory);
public static <T extends Screen> void registerProvider(Class<T> screenClass, Factory<T> factory) {
factories.put(screenClass, factory);
}
private static <T extends Screen> ScreenProcessor<T> createDefault(T screen) {
return new ScreenProcessor<>(screen);
}
public interface Factory<T extends Screen> extends Function<T, ScreenProcessor<? super T>> {
}
}

View File

@ -12,7 +12,7 @@ public interface ScreenProcessorProvider {
return ((ScreenProcessorProvider) screen).screenProcessor();
}
static <T extends Screen> void registerProvider(@NotNull Class<T> screenClass, @NotNull Function<T, ScreenProcessor<? super T>> factory) {
static <T extends Screen> void registerProvider(@NotNull Class<T> screenClass, @NotNull ScreenProcessorFactory.Factory<T> factory) {
ScreenProcessorFactory.registerProvider(screenClass, factory);
}
}