2009-12-15 3 views
4

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

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

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

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

ответ

16

Просто

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. 
} 
+0

Это то, что я собираюсь рекомендовать. +1 – mheathershaw

+0

Этот класс нуждается в собственности, указывающей, какая из этих свойств действительно установлена. –

+0

@mheathershaw: Спасибо. @No Refunds: OP не упоминал об этом, и, как правило, он также не несет ответственности за javabean, поэтому это не имеет смысла. – BalusC

1

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

0

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

Смежные вопросы