我正试图从列表List<Class> listofitems
中获取一个元素,并且我有一个类型为long
的全局变量position
。我想执行listofitems.get(position)
,但它不允许我这样做,因为get
以int
为参数。如果我想将position
的类型保持为long
,是否有其他方法可以做到这一点?(除了铸造position
到int
之外,还有其他方式吗(?
如果你想做到这一点,你必须构建一个类,它包含一组列表来表示你的数据。您可以编写自己的访问方法,将long拆分为较小的int,以访问列表中的正确位置。
请参阅以下答案:在java中使用long-as-ArrayList索引
这是一个必须通过Unsafe
api查询内存的点。如果列表/数组大于Integer.MAX_VALUE
,这里是链接
注意:
Unsafe
实际上是不安全的。如果您拥有的是一个List<Class>
,并且它不能更改为另一种类型,那么除了将该long
转换为int
之外,您什么也做不了。没有办法取任意的List
并用除int
之外的任何东西调用get
。