Java断言绑定到通用类型

来源:爱站网时间:2021-09-16编辑:网友分享
我想传递我的类型参数以在需要限制的地方进一步使用。我当前的参数不适合这些范围,但是在运行时我检查了它,并且可以确定......>

问题描述


我想传递我的类型参数以在需要限制的地方进一步使用。我当前的参数不适合这些范围,但是在运行时我检查了它,并确定它确实具有这些范围。如何告诉Java就是这种情况?

示例:

public abstract class Entity {
    // ...
}

public interface Adapter {
    // ...
}

public class MyAdapter implements Adapter {
    // ...
}

public  Adapter getAdapter(Class clazz, T entity) {
    if (Entity.class.isAssignableFrom(clazz) {
        return new MyAdapter(entity);
    } else {
        throw new RuntimeException("I am really sure this never happens!");
    }
}

问题是:我无法更改getAdapter-在T上添加约束的方法,因为它是我必须为所使用的框架实现的接口的一部分。这就是为什么我检查给定的T类是否实际上在其成为Entity子类的范围之内,然后想要用一个类型参数(现在已知在其范围内)正确实例化我自己的适配器类。但是,编译器仍然抱怨Type Parameter 'T' is not within its bound; should extend 'Entity'

我能以某种方式规避吗?

解决方法:


假设MyAdapter有一个接受E的构造函数,则可以同时转换entity和该构造函数的结果。

上一篇:@ Autowired HttpServletRequest的SpringBoot转发请求导致StackOverFlow异常

下一篇:如何使用SXSSF更改单元格颜色来编辑大数据的excel文件

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载