Zdravím,
Mám taký menši problém s generickými triedami.
Potreboval by som spraviť generickú hashmapu, aby to fungovalo nejak podobne:
HasMap#get(key, Integer.class); // Takto vypadá metóda na getter
HashMap#put(key, Integer.class, 10); // takto vypadá metóda na setter
Generická trieda:
public static final class Generic<A> {
private final Class<A> clazz;
private Object object;
public Generic(Class<A> clazz, Object object) {
this.clazz = clazz;
this.object = object;
}
public Class<A> getClazz() {
return clazz;
}
public void setObject(Object object) {
this.object = object;
}
public @NotNull A getObject() {
if (object != null && object.getClass() == clazz)
return (A) object;
ChatInfo.GENERAL_INFO.sendConsole("[Generic] Generic class of " + clazz.getSimpleName() + " doesnt exist!");
return null;
}
}
a moja trieda na hashmapu upravenú
public static final class GenericMap<A> extends HashMap {
public Object put(String key, Class<?> clazz, Object value) {
return super.put(key, new Generic<>(clazz, value));
}
public A get(String key, Class<A> ab) {
var a = ((Generic<A>) super.get(key));
if(Objects.requireNonNull(a.getObject()).getClass() == a.getClazz())
return (A) a.getObject();
return null;
}
}
Problém je, že mi to hádže object miesto Integer, a už si s tým nejako neviem rady, mordujem sa s tým dosť dlho.
Ďakujem za každú pomoc.