Return 基于内部边界的类型

Return a type based on inner bounding

我有一个方法可以检索注册侦听器服务的相关 "Plugin":

private static final Map<Class<? extends SubListener>, ListenerPluginPair<?>> listeners = new HashMap<>();

//Retrieves registering plugin
public static <T extends SubListener<?>> Plugin getRegisteringPlugin(Class<T> listener) {
    return ListenerManager.getPair(listener).getPlugin();
}

private static <T extends SubListener<?>> ListenerPluginPair<?> getPair(Class<T> listener) {
    Validate.isTrue(ListenerManager.isRegistered(listener), "Class is not registered with listener manager!");
    return ListenerManager.listeners.get(listener);
}

但是,我想知道是否有一种方法可以 return 基于 SubListener 的内部边界,例如在伪代码中:

public static <T extends SubListener<E extends Plugin>> E getRegisteringPlugin(Class<T> plugin) {
    return ListenerManager.getPair(listener).<E>getPlugin();
}

我实际上无法在 SubListener<?> 内指定一个新的泛型类型边界,所以这是否可以通过助手 类 或 Java 中的其他魔法来实现?

想通了!

只需创建一个稍后将在内部边界中使用的边界:

public static <T extends Plugin> T getRegisteringPlugin(Class<? extends SubListener<T>> listener) {//...