Тип списка для хранения нескольких типов данных - PullRequest
4 голосов
/ 15 декабря 2009

Итак, моя проблема в том, что я написал функцию, которая принимает два объекта типа Double, два Int и объект Calendar в Android (Java). Я полагаю, что класс, предоставленный для его запуска в отдельном потоке, AsyncTask, принимает в качестве аргумента только один тип объекта (но допускает множественное число), поэтому я решил, что смогу поместить его в List, LinkedList или что-то в этом роде.

Существует ли такой тип, который допускает несколько типов данных (Double, Double, Int, Int, Calendar), или мне придется создавать свой собственный класс объектов? Я начинающий программист, поэтому менее сложный, вероятно, лучше, но я также заинтересован в лучшем решении.

Функция принимает местоположение (double latitude, double longitude), пару параметров в виде целых чисел и объект календаря. Он принимает местоположение, параметры и дату, а затем возвращает объект времени восхода (или заката, в зависимости от параметров) для этого местоположения. Спасибо за советы, и я понимаю, что, вероятно, было бы лучше создать специальный объектный класс и просто передать его, либо переопределить класс фонового потока, но я довольно новичок в объектно-ориентированном программировании, поэтому чем меньше накладных расходов, тем лучше в настоящее время).

(Обновление) После большой работы оказалось проще создать класс типа данных и просто использовать его. В конце концов, правильный путь оказался проще. Кто бы мог подумать.

Ответы [ 3 ]

16 голосов
/ 15 декабря 2009

Just

List<Object> objects = new ArrayList<Object>();

или около того?

Я бы не рекомендовал такой подход. Данные должны быть как-то связаны друг с другом. Зачем вам было бы трудно для себя и смешивать разные типы данных в коллекции? Что вам нужно в конце? Просто передать его через слои? Вы также можете просто создать собственный объект javabean для этого (также известный как объект значения или объект передачи данных) Что-то вроде:

public class Data {
    private Double double1;
    private Double double2;
    private int int1;
    private int int2;
    private Calendar calendar;
    // Add/generate getters and setters.
}
1 голос
/ 15 декабря 2009

Наименее сложный способ - иметь список типа Object и таким образом сохранять элементы в списке.

0 голосов
/ 15 декабря 2009

Итак, вы действительно ищете ответ на неправильный вопрос.Проблема, с которой вы столкнулись, - это не та, которую вы описали, а тот факт, что вам нужно ее задать.Другими словами, если вам кажется, что вы делаете что-то не так или пытаетесь вставить квадратный колышек в круглое отверстие, это потому, что вы, вероятно, так и делаете.Если у вас есть полный контроль над кодом, ищите альтернативные методы реализации, чтобы получить желаемые результаты.Я на 100% уверен, что наивное решение, список с Objects - это плохо.:) Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...