powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача параметров массивом (поля обьекта)
19 сообщений из 19, страница 1 из 1
Передача параметров массивом (поля обьекта)
    #39440245
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

Как передать поля объекта в функцию и в функции изменить их
int l = ini.ArrayToField(new String[] {ini.path.Tab,ini.path.Name,ini.path.Ru,ini.path.Rd,ini.path.Class},
new String[] {file.TAB ,file.NAME ,file.RU ,file.RD ,file.CLASS}
);

Меняем поля объекта ini.path на поля объекта file

Пытаюсь через ArrayList - неверно ...

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
     int l = ini.ArrayToField(new ArrayList[] { new ArrayList<String>(Arrays.asList(ini.path.Tab  )),
	    		                                        new ArrayList<String>(Arrays.asList(ini.path.Name )),
					                        new ArrayList<String>(Arrays.asList(ini.path.Ru   )),
					                        new ArrayList<String>(Arrays.asList(ini.path.Rd   )),
					                        new ArrayList<String>(Arrays.asList(ini.path.Class)),
					                     },new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS});

    public int ArrayToField(ArrayList _fields[],String _values[])
    {
    	for (int i=0;i<_fields.length;i++) _fields[i].set(0,_values[i]);
		return _fields.length;
    }



Буду признателен за пример ....
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440248
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Воспользуйтесь рефлексией.

А что это за объект ini.path ?
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440261
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Вот так можно.
Код: java
1.
2.
3.
4.
5.
ini.path.Tab = file.TAB;
ini.path.Name = file.NAME;
ini.path.Ru = file.RU;
ini.path.Rd = file.RD;
ini.path.Class = file.CLASS;
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440267
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BeanUtils.copyProperties (ini.path, file);
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440277
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanHOME_X,

Воспользуйтесь рефлексией.

А что это за объект ini.path ?

Да просто пользовательский обьекта , типа record
Все поля, которые будут меняться это String.
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440278
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczHOME_X,

Вот так можно.
Код: java
1.
2.
3.
4.
5.
ini.path.Tab = file.TAB;
ini.path.Name = file.NAME;
ini.path.Ru = file.RU;
ini.path.Rd = file.RD;
ini.path.Class = file.CLASS;



Это я знаю - это не интересно ....
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440284
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman BeanUtils.copyProperties (ini.path, file);


Это досмотрю изучу - спасибо


А скажите через функцию это трудно ?
Полагал это самый простой способ ..., полагал просто слить адреса и в них осуществить запись
(рефлексией знакома)
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440294
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XЭто я знаю - это не интересно ....
"Это" на много проще (в пост врывается Оккам), а соответственно лучше вашего решения. Подумайте над этим.
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440299
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman BeanUtils.copyProperties (ini.path, file);
Если бы автор ещё хоть раз задумался о Coding Convention, то оно может быть и сработало.
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440308
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XА скажите через функцию это трудно ?

Нет, не трудно. Только у вас поля вместо функций. А геттеры и сеттеры очень легко заворачиваются в Consumer/Producer.
Но даже через лямбды ваш код полностью лишен смысла. От моего кода он отличается только константой 5, которую вернет метод:

Код: java
1.
2.
3.
4.
5.
6.
ini.path.Tab = file.TAB;
ini.path.Name = file.NAME;
ini.path.Ru = file.RU;
ini.path.Rd = file.RD;
ini.path.Class = file.CLASS;
int l = 5;



Вы даже не пытаетесь понять сколько лишнего шума создаёте в коде подобной ерундой.
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440353
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XЭто я знаю - это не интересно .... https://habrahabr.ru/post/246993/
BlazkowiczЕсли бы автор ещё хоть раз задумался о Coding Convention, то оно может быть и сработало.(:
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440371
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

Нет вопросов господа, у меня есть несколько вариантов - я изучу неизвестное (спасибо за ссылки)
Покажите пожалуйста как реализовать через ArrayList - МНЕ ПРОСТО ЛЮБОПЫТНО .....


Например так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
int l = ini.ArrayToField(new String[] {"Tab","Name","Ru","Rd","Class"},new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS});
    public int ArrayToField(String _fields[],String _values[])
    {
    	for (int i=0;i<_fields.length;i++) 
    	{
			try 
			{
				Path.class.getDeclaredField(_fields[i]).set(this.path,_values[i]);
			}
			catch (Exception e) 
			{
				System.out.println("Error null");
			}	
    	} 
		return _fields.length;
    }
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440388
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
set(new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS},
ini.path::setTab,
ini.path::setName,
ini.path::setRu,
ini.path::setRd,
ini.path::setClass
);


set(new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS},
s -> ini.path.Tab = s,
s -> ini.path.Name= s,
s -> ini.path.Ru = s,
s -> ini.path.Rd = s,
s -> ini.path.Class = s,
);

set(String[] values, Consumer ... consumers) {
    for(int i = 0; i < consumers.length; i++) {
          consumers[i].accept(values[i]);
    } 
}
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440391
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XПокажите пожалуйста как реализовать через ArrayList - МНЕ ПРОСТО ЛЮБОПЫТНО .....

Почему именно ArrayList? Почему ПРОСТО ЛЮБОПЫТНО сделать бестолковый код?
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39440482
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПочему именно ArrayList? Почему ПРОСТО ЛЮБОПЫТНО сделать бестолковый код?


Стереотип - привычка ....
в ряде случаях работаю непосредственно с указателями, (ссылками) В Javе - передача
по ссылке невозможна, по используя массив можно получить что-то аналогичное.
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39442699
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
set(new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS},
ini.path::setTab,
ini.path::setName,
ini.path::setRu,
ini.path::setRd,
ini.path::setClass
);


set(new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS},
s -> ini.path.Tab = s,
s -> ini.path.Name= s,
s -> ini.path.Ru = s,
s -> ini.path.Rd = s,
s -> ini.path.Class = s,
);

set(String[] values, Consumer ... consumers) {
    for(int i = 0; i < consumers.length; i++) {
          consumers[i].accept(values[i]);
    } 
}



Не могли бы уточнить код - не могу добиться реализаци..
Lambda использовал в таком варианте

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
numbers.forEach((Integer value) -> System.out.println(value));

set(new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS},
s -> ini.path.Tab = s,
s -> ini.path.Name= s,
s -> ini.path.Ru = s,
s -> ini.path.Rd = s,
s -> ini.path.Class = s,
);

Требует создание нового метода
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39443961
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Blazkowicz - уточните пожалуйста как добиться Вашего эффекта по приему с lambdoй

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
set(new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS},
ini.path::setTab,
ini.path::setName,
ini.path::setRu,
ini.path::setRd,
ini.path::setClass
);


set(new String[] {file.TAB,file.NAME,file.RU,file.RD,file.CLASS},
s -> ini.path.Tab = s,
s -> ini.path.Name= s,
s -> ini.path.Ru = s,
s -> ini.path.Rd = s,
s -> ini.path.Class = s,
);



Необходим свой метод ? его тело - приведите кодом
Или это подключение библиотеки - какая именно ?
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39443974
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Бросайте вы эту Java

Код: 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.
import java.util.function.Consumer;

public class Test {
    static class Path{
        String tab;
        String name;

        public void setTab(String tab) {
            this.tab = tab;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
    public static void main(String[] args) {
        Path path = new Path();
        set(new String[] {"tab", "name"},
                path::setTab,
                path::setName
        );

        set(new String[] {"tab", "name"},
                s -> path.tab = s,
                s -> path.name = s
        );
    }

    static<T> void set(T[] values, Consumer<T> ... consumers) {
        for(int i = 0; i < consumers.length; i++) {
            consumers[i].accept(values[i]);
        }
    }
}
...
Рейтинг: 0 / 0
Передача параметров массивом (поля обьекта)
    #39444104
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Спасибо за пример

Меня на интерфейсы потянуло (interface)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача параметров массивом (поля обьекта)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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