【发布时间】:2021-12-03 03:55:11
【问题描述】:
我有一个类Element<T>,其中包含一个T 和一个int:
class Element<T>{
T obj;
int i;
// ...
}
当没有存储T 时,我想使用obj 作为指向元素或索引的指针:
obj = someElement;
obj = indexOf(someElement);
当然,我不能这样做,因为 Java 没有联合或变体(如 c++ 变体)并且有严格的类型系统。
请注意,我希望能够通过 obj 访问元素,但我不想通过 obj 更改它,如果有帮助的话。
问题:
- 有什么方法可以在不创建我自己的变体的情况下完成此任务 上课还是安装?
- 如果是这样,什么是最节省内存的方法,因为我 需要创建许多元素吗?
【问题讨论】:
-
可以给Element类添加一个成员,类型为Object,我们称之为obj。在 Java 中,一切都是参考(C++ 中的一种“指针”,具有巨大的“类型”..)。因此,您可以为该 obj 分配您想要的任何对象。然后,如果 T 为 null,则使用 obj。
-
这听起来像XY problem。你想在这里做什么?
-
Element<T>类的字段obj是对堆上某处对象的引用。 Java 中只存储原语
标签: java reinterpret-cast type-systems