Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > метод изменяющий конкретный элемент массива


Автор: merfi 17.3.2009, 18:57
Нужно создать метод изменяющий конкретный элемент массива заданным значением 
Написал примерно следующее
Интерфейс:
Код

public interface ArrayControll{
     int changeElementArray(int index, int value, int[] tmparr);
}

Class который  implements
Код

public class MyArrayControls implements ArrayControll{

 public int changeElementArray(int i , int value, int[] tmparr) {
        System.out.println("Изменение заданного элемента массива");        
        System.out.println("До замены: индекс=" + i + " значение=" + tmparr[i]);
        tmparr[i] = value;
        System.out.println("После замены: индекс=" + i + " значение=" + tmparr[i]);        
        return tmparr[i];
    }
}

Вопрос: Правильно ли передавать массив как параметр метода . Хочется создавать массив в другом классе и применять к нему вышеописанный метод класса. Дело в том , что методов обработки массива  у меня много . Если массив не передавать как параметр , то придется его создавать в каждом методе. как быть ?


Автор: batigoal 18.3.2009, 00:06
Цитата(merfi @  17.3.2009,  19:57 Найти цитируемый пост)
Вопрос: Правильно ли передавать массив как параметр метода 

А чем плохо? Какие ты видишь негативные стороны у этого способа?

Автор: garbuz 18.3.2009, 00:35
Наверно надо помнить, что примитивные типы передаются по значению, и передавая таким образом массив в метод, у вас ничего в исходном массиве не изменится. Создавайте массив типа
Код

Integer[] array;

а чтобы вызывать метод в любом месте, создайте какой-нибудь сервисный класс и вызывайте статический метод
Код

public class ArrayUtil{

 public static void changeElementArray(int i , int value, Integer[] tmparr) {
        System.out.println("Изменение заданного элемента массива");        
        System.out.println("До замены: индекс=" + i + " значение=" + tmparr[i]);
        tmparr[i] = value;
        System.out.println("После замены: индекс=" + i + " значение=" + tmparr[i]);        
    }
}
}

Естественно придется избавиться от интерфейса.
Вызывать типа того
Код

....
ArrayUtil.changeElementArray(6, 32, changableArray);

Автор: kamre 18.3.2009, 03:35
Цитата(garbuz @ 18.3.2009,  00:35)
Наверно надо помнить, что примитивные типы передаются по значению, и передавая таким образом массив в метод, у вас ничего в исходном массиве не изменится. Создавайте массив типа
Код

Integer[] array;

И давно это в Java массивы из примитивных типов передаются по значению?   smile 
Переменная типа int[] и так будет ссылкой.

Автор: merfi 18.3.2009, 08:35
Цитата(batigoal @  18.3.2009,  00:06 Найти цитируемый пост)
А чем плохо? Какие ты видишь негативные стороны у этого способа?


Спастбо за ответ ! Коротко ясно и по существу ! Кстати насколько мне помниться имя массива и есть ссылка на массив

Автор: batigoal 18.3.2009, 10:27
Цитата(merfi @  18.3.2009,  09:35 Найти цитируемый пост)
Кстати насколько мне помниться имя массива и есть ссылка на массив 

Да, массив в Java является объектом и подчиняется всем правилам работы с объектами --> при передаче его в качестве параметра в метод он передается по ссылке.

Автор: garbuz 18.3.2009, 17:39
Цитата(batigoal @  18.3.2009,  10:27 Найти цитируемый пост)
Да, массив в Java является объектом и подчиняется всем правилам работы с объектами --> при передаче его в качестве параметра в метод он передается по ссылке. 

Мда... ложанулся я  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)