#java
#java
Вопрос:
Я выполняю школьное задание, в котором мне нужно передать массив в метод. Объявление массива выглядит следующим образом:
static Object[] myArray = new String[8];
Он вызывается здесь (Proj04Runner — это класс, который нам предлагается создать для назначения):
Proj04Runner runner = new Proj04Runner();
myArray = runner.runA(myArray);
Я попытался создать метод в моем классе Proj04Runner с именем runA, но я продолжаю получать сообщения об ошибках. Я пробовал:
Collection runA(Object[] myArray){
и
Collection runA(Collection myArray){
но оба раза получаю сообщения об ошибках. Сообщения об ошибках, соответственно:
Proj04.java:60: error: incompatible types: Collection cannot be converted to Object[]
Proj04.java:60: error: incompatible types: Object[] cannot be converted to Collection
Что я делаю не так?
Комментарии:
1. Итак, ваш инструктор дал вам
static Object[] myArray = new String[8];
? Если да, то это довольно странно. Это довольно страшная строка кода.2. Стив да, это код, который дал мне профессор. Он использует цикл для заполнения его строковыми значениями, но я все еще пытаюсь заставить его правильно перейти в мой метод.
3. Похоже, вам нужно реализовать
Object[] runA(Object[] myArray)
, но почему это не так, по крайней мереString[] runA(String[] myArray)
, я не могу себе представить.
Ответ №1:
Вы пытаетесь присвоить результат обратно myArray
. Вы не можете этого сделать. Потому что тип myArray
is static Object[]
. Вы исправляете это, определяя новую переменную для хранения результата. Нравится,
Collection myCollection = runner.runA(myArray);
Примечание: использовать rawtypes в Java — плохая идея. Collection
является универсальным типом. Это должно быть какое-то Collection<Type>
. Кроме того, в Proj04Runner
нем должно быть
Collection runA(Object[] myArray) { // <-- takes an `Object[]`
Наконец, вы не показали много кода. Но вы работаете Proj04
(нет Proj04Runner
).
Комментарии:
1. Простите меня за недостаточное объяснение. Профессор дает нам файл для запуска с именем Proj04, который нам НЕ разрешено редактировать, и мы должны написать класс с именем Proj04Runner, который заставляет Proj04 выдавать определенный результат. Предполагается, что runA сортирует значения в myArray, который определен в Proj04. Я уверен, что это звучит запутанно, не имея всего этого перед вами… Но спасибо, что уточнили, что моим параметром должен быть массив объектов.
2. Да, когда задано
Object[] myArray
. Опять же, не видя задействованного кода, трудно ответить более конкретно. Вероятно, вам следует проконсультироваться со своим профессором.