Are there ways to simplify the getLoadComponent(Class<T> type) method? The call LoadComponentFX lcfx = l.getLoadComponent(LoadComponentFX.class); seams a bit clumsy to me.Here is my code:public abstract class LoadComponent {}public class LoadComponentFX extends LoadComponent {}public class Load {    Set<LoadComponent> lc;    public <T extends LoadComponent> T getLoadComponent(Class<T> type) {        for (final LoadComponent l : lc) {            if (type.isInstance(l)) {                return (T) l;            }        }        return null;    }}Test code:public class LoadTest {    public static void main(final String[] args) {        Load l = new PointLoad();        LoadComponentFX lcfx = l.getLoadComponent(LoadComponentFX.class);    }}
Get object in a Set that is an instance of a generically specified type
java;generics;set
As your current code now indirectly forces the set to only contain one of each component, then you could use a Map instead. This would also reduce the need for the looppublic class Load {    Map<Class<? extends LoadComponent>, LoadComponent> lc;    public <T extends LoadComponent> T getLoadComponent(Class<T> type) {        return (T) lc.get(type);    }}Other comments:Make sure the Map is set to private finallc is not a good name. There's really no need to save bytes by shortening variable names. A better name would be loadComponentsWhen adding items to the map, you can use loadComponents.put(obj.getClass(), obj);