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

Как обратиться к объекту по имени со строки? - Android

Восстановить пароль Регистрация
 
elos
0 / 0 / 0
Регистрация: 05.08.2015
Сообщений: 46
15.05.2016, 15:54     Как обратиться к объекту по имени со строки? #1
Например есть объекты Object1, Object2 и т.д.
Мне нужно обратиться к объекту Object с номером n (Objectn).
n генерируется случайно.
Как это можно осуществить?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2016, 15:54     Как обратиться к объекту по имени со строки?
Посмотрите здесь:

Android Как получить доступ к элементу в папке по имени?
Как обратиться в ресурсах на конкретный элемент массива string-array? Android
Android Как мне обратиться к кнопкам в цикле?
Android Как присвоить объекту Button координату (x,y) на форме?
Android Как из таймера обратиться к UI
Android Как обратиться к элементу (button) внутри пункта списка (ListView)
Android Как обратиться к классу вшитому в jar архив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lurker2007
8 / 8 / 4
Регистрация: 11.05.2016
Сообщений: 16
15.05.2016, 15:58     Как обратиться к объекту по имени со строки? #2
elos, а нельзя сделать массив этих объектов? То есть будет Object[i]. по номеру i будешь обращаться к конкретному объекту.
elos
0 / 0 / 0
Регистрация: 05.08.2015
Сообщений: 46
15.05.2016, 16:03  [ТС]     Как обратиться к объекту по имени со строки? #3
Просто это для Android, а там строки храняться в .xml файле и доступны по id (имени).
Паблито
не спать!
1868 / 1602 / 493
Регистрация: 12.05.2014
Сообщений: 5,796
Завершенные тесты: 1
15.05.2016, 16:26     Как обратиться к объекту по имени со строки? #4
обычно, если появляется желание обращаться в объекту таким образом - это означает, что прихрамывает архитектура приложения

что на самом деле надо сделать?
elos
0 / 0 / 0
Регистрация: 05.08.2015
Сообщений: 46
15.05.2016, 16:47  [ТС]     Как обратиться к объекту по имени со строки? #5
Короче, есть пронумерованный список ответов.
Нужно выбрать и вывести случайный ответ.
Я методом Random.nextInt() получаю рандомное число и нужно вывести ответ с номером случайного числа.
Как-то так.
some_name
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,423
15.05.2016, 17:11     Как обратиться к объекту по имени со строки? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
elos, либо хранить объекты в виде карты (номер -> экземпляр объекта) либо reflection
как я понял, именование объектов подчиняется какому-то правилу, в данном случае com.example.Object1, com.example.Object2,...,com.example.ObjectN.

Добавлено через 15 минут
elos, можно как-то так:

Кликните здесь для просмотра всего текста

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.example;
 
import java.util.Random;
 
public class Program {
    public static void main(String[] args) {
        new Program().start();
    }
 
    public final String NAME_FORMAT = "com.example.Task%s";
 
    public void start() {
        for (int i = 0; i < 20; ++i) {
            int taskNumber = getRandomTaskNumber();
            TaskResult<?> taskResult = runTaskByNymber(taskNumber);
            if (taskResult != null) {
                System.out.printf("task %d = %s\n", taskNumber, taskResult.getResult());
            } else {
                System.err.printf("task %d not executed'\n", taskNumber);
            }
        }
    }
 
    @SuppressWarnings({ "unchecked", "rawtypes" })
    private TaskResult<?> runTaskByNymber(int taskNumber) {
        try {
            Class<Task> task = (Class<Task>) Class.forName(String.format(NAME_FORMAT, taskNumber));
            Task<TaskResult<?>> runnableTask = task.newInstance();
            return runnableTask.execute();
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
 
    public final Random RANDOMIZER = new Random();
 
    public int getRandomTaskNumber() {
        return RANDOMIZER.nextInt(getTotalNumberOfTask()) + 1;
    }
 
    public int getTotalNumberOfTask() {
        return 3;
    }
}
 
interface TaskResult<T> {
    T getResult();
}
 
interface Task<T> {
    T execute();
}
 
class Task1 implements Task<TaskResult<String>> {
 
    @Override
    public TaskResult<String> execute() {
        System.out.println("task1 is running...");
 
        return new TaskResult<String>() {
 
            @Override
            public String getResult() {
                // TODO Auto-generated method stub
                return "data";
            }
        };
    }
 
}
 
class Task2 implements Task<TaskResult<Integer>> {
 
    @Override
    public TaskResult<Integer> execute() {
        System.out.println("task2 is running...");
 
        return new TaskResult<Integer>() {
 
            @Override
            public Integer getResult() {
                return 2;
            }
        };
    }
 
}
 
class Task3 implements Task<TaskResult<Object>> {
 
    @Override
    public TaskResult<Object> execute() {
        System.out.println("task3 is running...");
 
        return new TaskResult<Object>() {
 
            @Override
            public Object getResult() {
                return "object";
            }
        };
    }
 
}
elos
0 / 0 / 0
Регистрация: 05.08.2015
Сообщений: 46
15.05.2016, 17:18  [ТС]     Как обратиться к объекту по имени со строки? #7
Спасибо!
Паблито
не спать!
1868 / 1602 / 493
Регистрация: 12.05.2014
Сообщений: 5,796
Завершенные тесты: 1
15.05.2016, 17:22     Как обратиться к объекту по имени со строки? #8
выше пример, как делать не надо
some_name
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,423
15.05.2016, 17:46     Как обратиться к объекту по имени со строки? #9
Паблито, почему?
Паблито
не спать!
1868 / 1602 / 493
Регистрация: 12.05.2014
Сообщений: 5,796
Завершенные тесты: 1
15.05.2016, 18:01     Как обратиться к объекту по имени со строки? #10
потому что есть массивы, например
some_name
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,423
15.05.2016, 18:44     Как обратиться к объекту по имени со строки? #11
ну так это очевидно, но если список объектов не постоянный, тогда могут быть трудности
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2016, 19:21     Как обратиться к объекту по имени со строки?
Еще ссылки по теме:

Как программно обратиться к внутренней памяти устройства Android
Android Как мне обратиться к методу в PrefActivity из MainActivity?
Как обратиться к элементу Drawer Activity? Android
Как получить значение текстового ресурса, не зная его имени? Android
Как обратиться к свойствам View по имени? Android

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

Или воспользуйтесь поиском по форуму:
SergioO
 Аватар для SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
15.05.2016, 19:21     Как обратиться к объекту по имени со строки? #12
Цитата Сообщение от Паблито Посмотреть сообщение
если появляется желание обращаться в объекту таким образом
в PHP такое Object$n "вшито" и в практику введено
Yandex
Объявления
15.05.2016, 19:21     Как обратиться к объекту по имени со строки?
Ответ Создать тему
Опции темы

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