Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / как в / 12 сообщений из 12, страница 1 из 1
17.03.2013, 22:15:52
    #38187395
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
как в java передать ссылочный тип в функцию и перевести указатель на новый объект, чтобы в вызывающем функцию коде отобразились эти изменения ?
...
Рейтинг: 0 / 0
17.03.2013, 22:19:17
    #38187398
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
redwhite90как в java передать ссылочный тип в функцию и перевести указатель на новый объект, чтобы в вызывающем функцию коде отобразились эти изменения ?
Любим mutable holder-ом. Например Object[1].
...
Рейтинг: 0 / 0
17.03.2013, 22:20:24
    #38187400
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
Blazkowicz,

можно пример?
...
Рейтинг: 0 / 0
17.03.2013, 22:34:27
    #38187414
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
redwhite90можно пример?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
target = new Object();
Object[] holder = new Object[] {target};
update(holder);
target = holder[0];

public  void update(Object[] out){
   out[0] = new Object();
}
...
Рейтинг: 0 / 0
17.03.2013, 22:41:30
    #38187418
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
Blazkowicz,

то есть сначала надо положить наш объект в массив, потом написать функцию специально для масссива, в функции специально вытащить этот объект, изменить на него ссылку.


как то сложно))))
...
Рейтинг: 0 / 0
17.03.2013, 23:50:23
    #38187444
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
redwhite90как то сложно))))
Потому что в большинстве случаев нафиг не нужно.
...
Рейтинг: 0 / 0
18.03.2013, 10:10:38
    #38187617
HoBTID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
MyObjectClass myObject = new MyObjectClass();

myObject = myLovelyFunction(myObject);

public MyObjectClass myLovelyFunction(MyObjectClass myObject) {
MyObjectClass resultObject = new MyObjectClass();

return resultObject;
}
...
Рейтинг: 0 / 0
18.03.2013, 12:44:37
    #38187844
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
HoBTID,
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class Test {
  
    public static void main(String[] args)  {
        MyObjectClass myObject = new MyObjectClass();
        System.out.println("before: "+myObject);
        Test t = new Test();
        t.myLovelyFunction(myObject);
        System.out.println("after: "+myObject);
      }

    public MyObjectClass myLovelyFunction(MyObjectClass myObject) {
        MyObjectClass resultObject = new MyObjectClass();
        System.out.println("inside: "+resultObject);
        return resultObject;
    }
}

class MyObjectClass {
}
...
Рейтинг: 0 / 0
01.04.2013, 13:19:00
    #38207019
HoBTID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
У Вас ошибка в тесте, исправил:

строку

t.myLovelyFunction(myObject);

нужно заменить на:

myObject = t.myLovelyFunction(myObject);
javapeckerHoBTID,
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class Test {
  
    public static void main(String[] args)  {
        MyObjectClass myObject = new MyObjectClass();
        System.out.println("before: "+myObject);
        Test t = new Test();
        myObject = t.myLovelyFunction(myObject);
        System.out.println("after: "+myObject);
      }

    public MyObjectClass myLovelyFunction(MyObjectClass myObject) {
        MyObjectClass resultObject = new MyObjectClass();
        System.out.println("inside: "+resultObject);
        return resultObject;
    }
}

class MyObjectClass {
}
...
Рейтинг: 0 / 0
01.04.2013, 19:02:38
    #38207877
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
redwhite90как в java передать ссылочный тип в функцию и перевести указатель на новый объект, чтобы в вызывающем функцию коде отобразились эти изменения ? ООП-решение :
1. Тип аргумента функции - интерфейс
2. Класс, передаваемый в качестве аргумента реализует данный интерфейс (п. 1)
3. Вносим изменения через setter'ы
Пример:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
interface I { 
    
    void inc(); 
    void dec(); 
}

class A implements I {

    protected int i = 0;
    
    @Override
    public void inc() {
        i++;
    }

    @Override
    public void dec() {
        i--;
    }
}

class Program {
    
    public void incrementor(I obj) {
        obj.inc();
    }
    
    public void decrementor(I obj) {
        obj.dec();
    }
}

...
A a = new A();
...
...incrementor(a);
...decrementor(a);
...
...
Рейтинг: 0 / 0
01.04.2013, 23:15:13
    #38208118
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
Потому что в большинстве случаев нафиг не нужно.
Похоже, что ява единственный более-менее популярный язык программирования, который не позволяет несколько значений вернуть из функции.
...
Рейтинг: 0 / 0
01.04.2013, 23:23:30
    #38208119
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в
Йуный джавистЪПотому что в большинстве случаев нафиг не нужно.
Похоже, что ява единственный более-менее популярный язык программирования, который не позволяет несколько значений вернуть из функции.
В гугл коллекциях подобный функционал есть вроде.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / как в / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]