use typetokens in RegistryHolder

This commit is contained in:
dfsek
2021-07-18 13:31:17 -07:00
parent d4e678fd65
commit cd208cbd18
3 changed files with 29 additions and 9 deletions

View File

@@ -2,9 +2,28 @@ package com.dfsek.terra.api.registry.meta;
import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.util.TypeToken;
import java.lang.reflect.Type;
public interface RegistryHolder {
<T> Registry<T> getRegistry(Class<T> clazz);
default <T> Registry<T> getRegistry(Class<T> clazz) {
return getRegistry((Type) clazz);
}
<T> CheckedRegistry<T> getCheckedRegistry(Class<T> clazz) throws IllegalStateException;
default <T> Registry<T> getRegistry(TypeToken<T> type) {
return getRegistry(type.getType());
}
<T> Registry<T> getRegistry(Type type);
default <T> CheckedRegistry<T> getCheckedRegistry(Class<T> clazz) throws IllegalStateException {
return getCheckedRegistry((Type) clazz);
}
default <T> CheckedRegistry<T> getCheckedRegistry(TypeToken<T> type) {
return getCheckedRegistry(type.getType());
}
<T> CheckedRegistry<T> getCheckedRegistry(Type type) throws IllegalStateException;
}