2013-10-25 2 views
2

Я хочу способ вернуть некоторые вещи, как:Java: как метод возвращает массив классов

{classA.class,classB.class,classC.class} 

Я пробовал:

public Class<?>[] methodeName() 
{ 
    return {classA.class,classB.class,classC.class}; 
} 

, но это не будет Скомпилируйте , так как Java думает, что я хочу создать класс ... Я не хочу использовать какие-либо списки ....

Любые предложения?

+2

Давайте посмотрим на картинку большего размера: почему вы хотите вернуть массив классов и почему вы не хотите использовать Список? – Paul

+0

есть еще больше кода для написания, чтобы создать их. – mahescho

+0

Не совсем: 'Arrays.asList (classA.class, classB.class, classC.class);' Большой вопрос: зачем вам нужен метод для возврата коллекции классов? – Paul

ответ

4

Вам необходимо правильно создать массив:

return new Class<?>[]{classA.class, classB.class, classC.class}; 

Что вы пытаетесь сделать, только работает с массивом объявлений:

Class<?>[] classes = {classA.class, classB.class, classC.class}; // <-- 
return classes; 

выражения создания массива детализированы в JLS §15.10.

+0

спасибо, I'v попытался сделать это слишком сложным образом ... то, что мне действительно нужно, было просто статическим arry в моем классе и не возвращал методу, поскольку мне просто нужен статический массив классов :-) – mahescho

0

Вы должны сказать, что тип Class

return new Class[] {classA.class, classB.class, classC.class}; 

Где

return {classA.class,classB.class,classC.class};// Compiler is asking what 
       type of array it is ?? I can't store without knowing its type. 
0

Попробуйте один

public Class<?>[] methodeName() 
    { 
     Class<?>[] classes= {classA.class,classB.class,classC.class}; 
     return classes; 
    } 
0

Это будет работать

Class[] fun(){ 
    Class[] i = {classA.class,classB.class,classC.class}; 
    return i; 
} 
Смежные вопросы