get () из списка, но передача длинного аргумента в Java [дубликат]
Я пытаюсь получить элемент из списка List<Class> listofitems, и у меня есть глобальная переменная positionтипа long. Я хотел бы выступить, listofitems.get(position)но это не позволяет мне сделать это, поскольку getпринимает в intкачестве аргумента. Если я хочу сохранить тип positionas long, есть ли другой способ сделать это? (любым другим способом, кроме преобразования positionв int)?
Ответы
Если вы хотите это сделать, вам нужно будет создать класс, содержащий группу списков для представления ваших данных. Вы можете написать свой собственный метод доступа, который разбивает ваши длинные на более мелкие целые числа, чтобы получить доступ к нужной позиции в вашем списке.
См. Этот ответ: Использование длинного индекса ArrayList в java
Это момент, когда память нужно запрашивать через Unsafeapi. В случае списка / массивов больше, чем Integer.MAX_VALUE вот ссылка.
ЗАМЕТКА:
Unsafe буквально небезопасно. Если у вас есть файл List<Class>, и его нельзя изменить на другой тип, тогда вы ничего не можете сделать, кроме как преобразовать longего в int. Невозможно взять произвольный Listи позвонить getс чем-либо, кроме int.