2013-03-19 4 views
2

Обычно я делаю классы для всего, чтобы объединить несколько типов.
Например, для объединения Int и двойнойЭто хорошая идея создать «слишком много» классов?

public class IntAndDouble{ 
     public final int INT; 
     public final double DOUBLE; 
     public IntAndDouble(int i,double d){INT = i; DOUBLE = d;} 
} 

довольно много, как создание часто небольшой struct.

Но я заметил, что для любого малого класса, как это, есть файл а ~ 1KB (300-1000 байт) в jar
И при создании 10-15 этих маленьких классов может быть увеличение ~ 30KB в jar

на это не будет проблемой в реальной Java, где 30KB почти ничтожна,
но в J2ME, где регулярное приложение, как правило, около 200KB, 30KB огромное значение.

Каков наилучший способ создания «небольшой структуры» в J2ME?

+1

Невозможно. Вы можете использовать массив, если используете несколько полей одного типа, но я уверен, что это не то, что вам нужно. JavaME в значительной степени просят вас не быть объектно-ориентированным. Однако в JavaSE ваши классы должны иметь значимые имена. Вы в основном реализуете кортежи ... –

+1

Я не думаю, что правильно сказать: «В JavaME обычное приложение обычно составляет около 200 КБ». Это не JavaME. Это (более старые) устройства. Новые телефоны с поддержкой JavaME могут легко запускать приложения размером 3-4 МБ. Другими словами: Только беспокоитесь, если вы настаиваете на поддержке старых телефонов. –

ответ

1

Если вы используете действительно старый телефон с небольшим объемом памяти, объем памяти, используемый для хранения кода для «структурного» класса, вряд ли будет значительным.

Примечание: размер файла «.class» не отражает объем памяти в памяти. Файл «.class» содержит множество материалов (имена типов/методов/классов и подписи и т. Д.), Которые используются только тогда, когда класс загружается и связывается. После этого обычно собирают мусор.

Я не знаю, какова фактическая стоимость памяти легкого класса (и я не могу ее измерить), но я бы предсказал на порядок меньше, чем вы говорите.

Каков наилучший способ создания «небольшой структуры» в J2ME?

В большинстве случаев именно так, как вы это сделали в своем классе IntAndDouble.

Если все поля имеют одинаковый базовый тип, тогда вы можете использовать массив; например int[] или Object[], но вы «платите» за это другими способами.

(Остерегайтесь преждевременной оптимизации!)

0

Мы нацелены на очень слабых устройств в Западной Африке и в других областях ниже технологий в мире. Мы нашли несколько устройств, которые могут обрабатывать только 500 000 приложений и общую информацию (для всех приложений). Существует значительное число наших потребителей по всему миру, которые используют эти типы устройств. Поэтому, если вы идете супер-универсальным, я все равно буду заниматься тем, чтобы мой код был как можно меньше.

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