2016-01-01 2 views
-1
/ private static final 
/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    long arraySize=10_000_000L; 
    // TODO code application logic here 
    Long[] largeArray = new Long[10000000];// compiles OK 
    Long[] myIntArray = new Long[arraySize];// compile error 
} 

Может кто-нибудь помочь мне понять, почему я получаю эту ошибку компилятора. "ошибка: несовместимые типы: возможное преобразование с потерями из long в int"Возможно, с потерей конверсии странная ошибка java

+0

Вы используете длинный размер для массива, вот почему и вы не можете. – Codexer

ответ

0

Вы не можете инициализировать массив с большим размером. Вы можете реализовать только массив, используя целочисленный размер п что удовлетворяет:

0 <= n <= Integer.MAX_VALUE 

См Java SE specification > Array Access.

All arrays are 0-origin. An array with length n can be indexed by the integers 0 to n-1.

Arrays must be indexed by int values; short, byte, or char values may also be used as index values because they are subjected to unary numeric promotion (§5.6.1) and become int values.

An attempt to access an array component with a long index value results in a compile-time error.

+1

Пока вы правы, в ссылке, которую вы предоставляете, нет ни одной ссылки или не подтверждается ваше требование. – Makoto

+0

Правильный Макото, я пересмотрел свой ответ, чтобы включить спецификацию Java SE. В нем специально указано исключение времени компиляции для использования длинной длины. –

0

«Массивы должны быть индексированы Int значений ... Попытка доступа к компоненте массива с длинным значением индекса приводит к ошибке времени компиляции ». --- Википедия https://en.wikipedia.org/wiki/Criticism_of_Java#Large_arrays

Смежные вопросы