java - 从父类获取泛型 Class 对象
问题描述
在我的程序中,我有一个带有泛型参数的抽象基类。在这个类中,我必须获取Class
子类中使用的泛型参数的对象。目前我这样做:
public abstract class BaseItem<T>
public BaseItem(int id, Class<T> childGenricClass) {
//...
}
}
public class MainItem extends BaseItem<String> {
public MainItem(int id) {
super(id, String.class);
}
}
我真的必须通过构造函数将类传递给父类,还是在 Java 中有一种方法可以从父类动态获取它?
解决方案
这是正确的,因为JVM
在运行时删除所有类型。在运行时,您的T
is always Object
,因此您的应用程序没有任何机会找出是什么类T
。因此,您必须另外添加Class<T> cls
变量。
推荐阅读
- android - 小吃栏滑动动画导致浮动动作按钮意外跳跃
- javascript - 为什么 .json() 是异步的?
- javascript - 应用程序状态,以及未使用 redux 映射到 props 的操作
- python - 有没有办法在 wxpython(或 wxpython.richtext)中仅在一个方向上缩放字体
- mysql - Laravel 默认用户迁移
- python-3.x - 二维数组的sklearn线性回归
- python - 从 pandas 数据框中获取随机样本,但每个值只有一个
- android - 即使应用程序“中断”,SetRepeating() 方法 Android [Xamarin.Forms] 中的动态间隔
- javascript - 将数组设置为 null 然后在 useEffect React 中更新它
- python - 使用 virtualenv 时如何指定我的机器上未安装的 python 版本?