2015-10-27 2 views
0

Как я могу отделить объявление массива int от определения ?. Извините за основные вопросы. i m в основном из фона c/C++.Отдельное объявление из определения массива int в java

int [] res; 

switch (something) 
{ 
    case <something>: 
    res = somefunction() 
    break; 
{ 

if (res == null) ==>> problem is here. // 'res' might not have been initialized. 

Как я могу справиться с этим, и какой лучший подход?

+0

Это может быть приятно, если почему голосует за этот вопрос ?. что поможет мне исправить себя, чтобы лучше задать вопрос. – DrunkenMaster

ответ

4

Когда переменная массива (или в этом отношении, любая переменная) является локальной переменной, вы должны дать ему начальное значение, так как локальные переменные не имеют значения по умолчанию.

int [] res = null; 

Таким образом, оно будет иметь значение, даже если ваш оператор case не выполнен.

3

Итак, инициализировать

int [] res = null; 
6

В других ответах упоминалось, что вы можете сделать

int [] res = null; 

, но я часто предпочитаю, чтобы убедиться, что switch обрабатывает все случаи:

int [] res;     // Leave it uninitialized 

// ... 

switch (something)   // Set `res` in every branch 
{ 
    case <something>: 
    res = somefunction(); 
    break; 
    // ... 
    default:     // Including the default 
    res = null; 
    break; 
} 

Таким образом, если добавить новое условие, вы должны сознательно решить, что вам следует делать с res (так как если вы ничего не сделаете, компилятор вам напомнит).

Существуют прецеденты как для pre-init, так и для «handle it in all paths».

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