forked from Clones/Controlify
✏️ Improve screen processor factory
This commit is contained in:
@ -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>> {
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user