I will try to explain my problem in the least amount of code possible. I am trying to avoid casting in this so beware!
public interface AttributeData {
/*Marker for Data Class For the Data*/
}```
```java
public sealed interface AttributeHandler<T extends AttributeData>
Class<T> dataClass();
public class AttributeRegistry extends ImmutableRegistry<Key, AttributeHandler<? extends AttributeData>>
private final ObjectArrayList<AttributeData> attributes;
public <T extends AttributeData> Optional<T> get(Class<T> clazz) {
for (AttributeData attr : attributes) {
if (attr.getClass() == clazz) {
//noinspection unchecked
return Optional.of((T) attr);
}
}
return Optional.empty();
}```
```java
public non-sealed interface ModifierHandler<T extends AttributeData> extends AttributeHandler<T> {
StatProfile modifierStats(SkyblockItem item, T data);```
```java
public void process(Container container) {
// Process Stats First
for (AttributeHandler<? extends AttributeData> value : registry.values()) {
if (value instanceof ModifierHandler<? extends AttributeData> modifierHandler) {
container.get(value.dataClass()).ifPresent(data -> {
modifierHandler.modifierStats(null, data);
});
}
}
}```
Error attached as image