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

Работаю с полей объекта, в котором задекларирован массив в нем пользоват. тип,
пытаюсь выйти на значение поля этого массива.

Подскажите как это правильно сделать используя "путь" "list"."Name"

Код: 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.
39.
40.
41.
42.
43.
44.
45.
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

class Record
{
	String Name;
	String Exec;

        public Record(String _Name,
        	             String _Exec
		   	   )
       {
   	    this.Name=_Name;
    	    this.Exec=_Exec;
       }
}

public class execute {

	public List<Record> list;
	
	public execute() 
	{
		this.list      = new ArrayList<Record>();
		this.list.add(new Record("Num 1","Hello"));
		this.list.add(new Record("Num 2","Buhlo"));
	}

	public static void main(String[] args) 
                 throws NoSuchFieldException, SecurityException,IllegalArgumentException,IllegalAccessException 
	{
             Field table,field;
             String sect   ="list";
             String name ="Name";

             execute a = new execute();
             table = a.getClass().getDeclaredField(sec);
             Object o = table.get(a);   - вернул массив

        -- Как обратиться ниже не понимаю
      	    field=table.getType().getDeclaredField(part);
    	    System.out.println("Executed "+o);
	}
}



Заранее благодарен !
...
Рейтинг: 0 / 0
Массив + reflect.Field
    #39414962
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XДоброго дня господа !

Работаю с полей объекта, в котором задекларирован массив в нем пользоват. тип,
пытаюсь выйти на значение поля этого массива.

Подскажите как это правильно сделать используя "путь" "list"."Name"

Код: 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.
39.
40.
41.
42.
43.
44.
45.
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

class Record
{
	String Name;
	String Exec;

        public Record(String _Name,
        	             String _Exec
		   	   )
       {
   	    this.Name=_Name;
    	    this.Exec=_Exec;
       }
}

public class execute {

	public List<Record> list;
	
	public execute() 
	{
		this.list      = new ArrayList<Record>();
		this.list.add(new Record("Num 1","Hello"));
		this.list.add(new Record("Num 2","Buhlo"));
	}

	public static void main(String[] args) 
                 throws NoSuchFieldException, SecurityException,IllegalArgumentException,IllegalAccessException 
	{
             Field table,field;
             String sect   ="list";
             String name ="Name";

             execute a = new execute();
             table = a.getClass().getDeclaredField(sect);
             Object o = table.get(a);   - вернул массив

        -- Как обратиться ниже не понимаю
      	    field=table.getType().getDeclaredField(part);
    	    System.out.println("Executed "+o);
	}
}



Заранее благодарен !
...
Рейтинг: 0 / 0
Массив + reflect.Field
    #39414963
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArrayList это не массив. Это List. А зачем в нём ковыряться рефлексией? Почему просто к List или Collection не привести?
...
Рейтинг: 0 / 0
Массив + reflect.Field
    #39414971
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczArrayList это не массив. Это List. А зачем в нём ковыряться рефлексией? Почему просто к List или Collection не привести?


У меня есть следующая установка строка = "list"."Name"
Какой это тип изначально неизвестно.
Подскажите пожалуйста на примере

P.S.
Это результат распарсиван. некого установочного кода ....
(примите это как неизменную вселенскую истину)
...
Рейтинг: 0 / 0
Массив + reflect.Field
    #39415421
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Решение следующее
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, ClassNotFoundException 
	{
        Field  field;
        int    row  = 1; 
        String sect = "list";
        String part = "Name";
        execute example = new execute();
        
        field = example.getClass().getDeclaredField(sect);
        ParameterizedType pt = (ParameterizedType) field.getGenericType();
        Class<?> anyClass = Class.forName(pt.getActualTypeArguments()[0].getTypeName());
        List<Object> list = (List<Object>)  field.get(example);
        field = anyClass.cast(list.get(row)).getClass().getDeclaredField(part);
        String s = (String) field.get(anyClass.cast(list.get(row)));
    	System.out.println("Executed "+s);
	}



Спасибо за участие
...
Рейтинг: 0 / 0
Массив + reflect.Field
    #39415433
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Обычно, когда пишут фреймверк, то коллекции и другие стандартные типы вводят как явный тип.

Код: java
1.
2.
3.
if(obj instanceof Collection) {
   return ((Collection)obj).iterator().next(); //Или любой другой метод наиболее абстрактного типа
}



Что на много проще того что вы привели.
...
Рейтинг: 0 / 0
Массив + reflect.Field
    #39415441
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Чет я провтыкал. Там же Iterable можно. С другой стороны пользы от этого мало. Массивы его не реализуют.
...
Рейтинг: 0 / 0
Массив + reflect.Field
    #39415706
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

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


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