Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
#1

Передача параметров по ссылке - Программирование Android

28.12.2013, 13:29. Просмотров 714. Ответов 4
Метки нет (Все метки)

Допустим, есть ф-я:
Java
1
2
3
4
int foo()
{
 
}
Хотелось бы чтобы она изменяла значение, передаваемое ей.
Например:
Java
1
2
3
4
5
6
7
8
String typeOfError = "";
 
int foo(typeOfError)
{
//do something
 
typeOfError = "Error while operation abcde";
}
После чего можно было получить уже измененное значение переменной typeOfError.
Я так понял, в Java нет передачи параметров по ссылке. Но может есть удобная замена этому?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2013, 13:29     Передача параметров по ссылке
Посмотрите здесь:

Передача параметров с Activity в Fragment - Программирование Android
Здравствуйте! У меня не получается передать параметры с Activity в Fragment. Я пытался сделать это следующим образом: В Activity: ...

Передача параметров внутрь apk - Программирование Android
Всем привет! Для аналитики установок приложения нужно передавать идентификатор клика внутрь apk. Как я себе это представляю: есть...

Комбинирование программных параметров текста и параметров из layout - Программирование Android
Есть класс, отображающий layout на котором есть элемент TextView. В layout textView имеет вид: <TextView ...

Не происходит переход по ссылке - Программирование Android
Как сделать текстовую ссылку в android studio? Пример <a href="google.com">какой-то текст</a> Только с Textview нужно так Делал...

Получение изображения по ссылке - Программирование Android
Дело в том, что у меня в приложении планируется ~7000 картинок, впихивать это все туда не имеет смысла. Но мне бы хотелось при...

Воспроизвести аудио по интернет-ссылке - Программирование Android
Всем привет, хочу сднлать аудио плеер, только проигрывать он будет не локальные файлы, а например будет тянуть загруженную дожожку на...

Разработка приложения.Вывод html. Картинка по ссылке - Программирование Android
Добрый вечер! Подскажите, как реализовать следующие варианты: 1) Я получаю с json html код и вывожу на экран. Сейчас сделал через...

WebView, открывается браузер при переходе по ссылке - Программирование Android
Возникла проблема такого рода, что в приложении WebView часто перекидывает пользователя в браузер смартфона. Какие есть варианты для...

Обработка перехода по ссылке на skype при его отсутствии - Программирование Android
Здравствуйте! Сделал текст с обработкой его на клик как ссылку и ссылка на skype с помощью a href. Если у человека установлен skype, то...

Как выгрузить время из сайта по ссылке в андроид приложение? - Программирование Android
Мне нужно чтобы по нажатию на кнопку выгружалось из сайта по ссылке время и выводилось в строку как мне это осуществить? И еще желательно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ASDFD12
33 / 33 / 5
Регистрация: 15.09.2012
Сообщений: 424
28.12.2013, 13:56     Передача параметров по ссылке #2
String - это ссылочный тип Java, соответстевенно передается ссылка и в твоем случае все должно работать
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
28.12.2013, 14:04  [ТС]     Передача параметров по ссылке #3
Цитата Сообщение от ASDFD12 Посмотреть сообщение
String - это ссылочный тип Java, соответстевенно передается ссылка и в твоем случае все должно работать
Точно. Объекты передаются по ссылке. А значит не только строки, но и перечисления передаются по ссылке.
Уже легче ).
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
28.12.2013, 18:28     Передача параметров по ссылке #4
Цитата Сообщение от Slon747 Посмотреть сообщение
Я так понял, в Java нет передачи параметров по ссылке. Но может есть удобная замена этому?
Именно так. В метод можно передать ссылку на объект и потом внутри метода делать любые манипуляции с объектом на который эта ссылка ссылается. Однако, внутри метода вы не сможете сделать так, чтоб ссылка стала указывать на другой объект. Строка в джаве это неизменяемый объект, и когда внутри метода вы попытаетесь присвоить параметру новое значение - оно будет доступно только внутри метода. За пределами метода никаких изменений не произойдет. Следующий код напечатает "1111" в подтверждении моих слов:
Java
1
2
3
4
5
6
7
8
9
10
public class Test {
    public static void main(String[] args)  {
        String tmp = "1111";
        foo(tmp);
        System.out.println(tmp);
    }
    static void foo(String str) { 
        str = "2222";
    }
}
Как быть?
1) Использовать StringBuffer вместо String
2) Юзать адский костыль с массивом из одного элемента (не рекомендуется) :
Java
1
2
3
4
5
6
7
8
9
10
public class Test {
    public static void main(String[] args)  {
        String tmp[] = {"1111"};
        foo(tmp);
        System.out.println(tmp[0]); // Напечатает 2222
    }
    static void foo(String str[]) { 
        str[0] = "2222";
    }
}
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
29.12.2013, 15:35  [ТС]     Передача параметров по ссылке #5
Цитата Сообщение от angryrobot Посмотреть сообщение
Именно так. В метод можно передать ссылку на объект и потом внутри метода делать любые манипуляции с объектом на который эта ссылка ссылается. Однако, внутри метода вы не сможете сделать так, чтоб ссылка стала указывать на другой объект. Строка в джаве это неизменяемый объект, и когда внутри метода вы попытаетесь присвоить параметру новое значение - оно будет доступно только внутри метода. За пределами метода никаких изменений не произойдет. Следующий код напечатает "1111" в подтверждении моих слов:
Java
1
2
3
4
5
6
7
8
9
10
public class Test {
    public static void main(String[] args)  {
        String tmp = "1111";
        foo(tmp);
        System.out.println(tmp);
    }
    static void foo(String str) { 
        str = "2222";
    }
}
Как быть?
1) Использовать StringBuffer вместо String
2) Юзать адский костыль с массивом из одного элемента (не рекомендуется) :
Java
1
2
3
4
5
6
7
8
9
10
public class Test {
    public static void main(String[] args)  {
        String tmp[] = {"1111"};
        foo(tmp);
        System.out.println(tmp[0]); // Напечатает 2222
    }
    static void foo(String str[]) { 
        str[0] = "2222";
    }
}
Спасибо.
Yandex
Объявления
29.12.2013, 15:35     Передача параметров по ссылке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru