2015-06-17 7 views
0

У меня есть сомнение ниже кода, который использует параметр как java.lang.reflect.Array.можно вызвать метод с аргументом как java.lang.reflect.Array?

public static void display(java.lang.reflect.Array stringArray) { 
    System.out.println(java.lang.reflect.Array.get(stringArray, 1)); 
} 

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

, если я могу написать такой метод, как мы можем назвать этот метод, но we can not instantiate java.lang.reflect.Array, а также мы не можем получить объект от Class класс ссылки, как мы можем получить java.lang.reflect.Field объект.

+3

Для чего этот код? Что вы пытаетесь выполнить с помощью этого кода? – John

+0

На самом деле я только что подумал об этом коде! поэтому я попытался, но я не смог назвать это, поэтому я спросил, возможно ли это или нет. – Prashant

ответ

2

Array - всего лишь вспомогательный класс - обратите внимание, как все методы на нем являются статическими. Я бы не ожидал, что когда-нибудь это станет его примером. Для того, чтобы принять массив - и любого массива, в том числе int[] и т.д. - Вы должны были бы сделать метод принять Object:

public static void display(Object stringArray) { 
    System.out.println(java.lang.reflect.Array.get(stringArray, 1)); 
} 

В этот момент, вы можете передать String[] в качестве аргумента, и он будет печатать из второго элемента.

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

public static void display(String[] stringArray) { 
    System.out.println(stringArray[1]); 
} 

? Теперь ясно, что вы намерены ...

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