2014-01-06 5 views
0

Я получаю следующее сообщение об ошибке:массива требуется, но java.lang.String нашел Java класс Array, ошибку

array required, but java.lang.String found 

, и я не знаю, почему.

Я пытаюсь сделать экземпляр объекта (я считаю, что это правильная терминология), в массив этого типа класса (объекта).

У меня есть класс:

public class Player{ 
    public Player(int i){ 
      //somecodehere 
    } 
} 

тогда в моей основной метод я создаю экземпляр этого:

static final Player[] a = new Player[5]; // this is where I'm trying to create the array. 
public static void main(String[] args){ 
    Player p = new Player(1); 
    a[0] = p; //this is the line that throws the error 
} 

Любые идеи, почему это?

+4

Вы не показываете нам код, который бросает исключение. Этот код в порядке. –

+0

предоставит нам код, из-за которого произошло исключение! – Rugal

+1

Просто сохраните и перекомпилируйте. –

ответ

4

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

static final Player[] a = new Player[5]; // this is where I'm trying to create the array. 
public static void main(String[] args){ 
    String a = "..."; 
    Player p = new Player(1); 
    a[0] = p; //this is the line that throws the error 
} 

В этом случае ваша локальная переменная a будет затенять static переменную с тем же именем. Таким образом, выражение доступа к массиву

a[0] 

вызовет ошибку компиляции, как

Foo.java:13: error: array required, but String found 
       a[0] = p; // this is the line that throws the error 

так a не является массивом, но [] обозначение работает только для типов массивов.

Возможно, вам просто нужно сохранить и перекомпилировать.

+0

Это было действительно очень впечатляюще. Это была проблема с моей клавиатурой, у меня была другая локальная переменная. Спасибо! – jake2389

+1

@ user1530491 Почему клавиатура может вызвать эту проблему? : о – Baby

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