19 / 19 / 2
Регистрация: 13.07.2012
Сообщений: 164
1

Передать класс в аргументе метода

18.12.2015, 16:59. Показов 4584. Ответов 1
Метки нет (Все метки)

Делаю класс который представляет из себя коллекцию объектов произвольного типа в виде List<Object> . Хочу что бы из его можно было извлечь нужный объект по имени класса. Например так.
Java
1
String str = objectCollection.get(String.class);
Собственно в методе get идет трассирующий instanceof по всем объектам в списке и возврат первого совпадения.
Java
1
2
3
4
5
for (int i = 0; i < list.size(); i++) {
                if (list.get(i) instanceof cls) {
                     return list.get(i);
                }
}
Я не понимаю как передать в метод класс, принадлежность к которому я хочу проверять (и вообще возможно ли). Как это сделать и будет ли сравнение верно при том условии что все объекта хранятся как Object? Плюс вот еще что. Я хочу сделать универсальный класс возврата нескольких объектов из метода. Метод возвращает ObjectCollecton, а дальше любой другой объект извлекается из его через objectCollction.get(Class.class) . У меня есть такое подозрение что я изобретаю велосипед из-за недостаточных знаний языка, есть ли дефолтное решение задачи?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2015, 16:59
Ответы с готовыми решениями:

Невозможно передать ArrayList в аргументы метода без модификатора static у этого метода или метода main
Крч, хочу передать экземпляр класса ArrayList в метод, но ide говорит, что нельзя это сделать, пока...

@ в аргументе метода
подскажите плиз, что означает следующая запись method(..., object @param)? меня интересует именно...

Делегат в аргументе метода
Добрый день, есть метод и два его вызова, в чем их различие? static void Main() ...

Класс: Формальным параметром метода должна быть ссылка на абстрактный класс...
&quot;Формальным параметром метода должна быть ссылка на абстрактный класс или наиболее общий интерфейс...

1
2881 / 2293 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.12.2015, 17:25 2
если я правильно понял задачу
и даже не уверен что это хорошее решение, может отцы зайдут покритикуют
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
public class Something {
 
    public static void main(String[] args) {
        Wrapper w = new Wrapper();
        w.put("String 1");
        w.put("String 2");
        w.put(42);
        w.put("String 3");
 
        ArrayList<Integer> elements = w.getElements(Integer.class);
        System.out.println(elements.size()); // 1
        //
        ArrayList<String> stringArrayList = w.getElements(String.class);
        System.out.println(stringArrayList.size()); // 3
 
    }
}
 
class Wrapper {
    private List<Object> list = new ArrayList<>();
 
    public void put(Object object) {
        list.add(object);
    }
 
    public <T> ArrayList<T> getElements(Class<T> clazz) {
        ArrayList<T> objects = new ArrayList<>();
        for (Object o : list) {
            if (o.getClass().equals(clazz)) objects.add((T) o);
        }
        return objects;
    }
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2015, 17:25

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Передать аргумент метода через аргумент другого метода
Всем привет. Простой пример того, что хочу сделать. Есть массив констант в классе А. Каждое...

Как в порождаемый класс передать ссылку на основной класс?
Основной класс: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include &lt;QMainWindow&gt; #include...

Передать указатель метода в функцию С++
Пишу простейшее сетевое приложение. Оформил всё в одном классе. Далее подключил этот класс к...

Передать делегат с параметрами в аргументы метода
Вообщем нашел способ как вызывать ивенты с любого класса, и что б в подписчике был доступ к любому...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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