2011-12-20 1 views
2

В частности, в J2ME, который использует больше ресурсов: манипулирует переменными public static или обрабатывает методы set() и get()?Какой подход потребляет больше ресурсов: статический или геттер/сеттер?

+0

Почему закрытые голоса? –

+0

Думаю, вам нужно немного расширить этот вопрос, какие ресурсы вы имеете в виду. Кстати, я думаю, что эти два не обязательно являются взаимозаменяемыми, либо использование статических переменных, скорее всего, потребует разработки вашего кода определенным образом. Я бы предложил использовать геттеры и сеттеры по всем «обычным причинам», просто для простоты – posdef

+0

Даже вы просите J2ME на Android, есть лучшая практика: не используйте внутренний геттер/сеттер. Объяснение [здесь] (http://developer.android.com/guide/practices/design/performance.html#internal_get_set) – PeterMmm

ответ

0

public static доступ к полю будет стоить вам меньше ресурсов, чем setter/getter методов. Если вы находитесь в современной JVM Hotspot, будет минимальная разница.

0

установить и получить больше, чем доступ к нормальным полям. Вероятно, вы не имели в виду static.

2

Это невозможно сказать, так как это зависит от реальной среды выполнения. Компилятор JIT, AOT или Hotspot может очень хорошо оптимизировать накладные расходы потенциального метода.

2

Использование get() и set() методов может быть немного дороже, чем прямой доступом атрибутов (хотя компилятор или JIT мои оптимизирует метод требует от встраивания их), но в любом случае разница незначителен. Кроме того, в общем случае вы не должны объявлять все свои атрибуты как static, а только постоянные значения.

С другой стороны, использование методов get() и set() является предпочтительным вариантом для обеспечения инкапсуляции данных, это хорошая объектно-ориентированная практика программирования. Не имея этих методов, вы вынуждаете выставлять атрибуты снаружи, уменьшая способность класса скрывать детали реализации и делая будущие изменения в реализации сложнее.

2

Внедрение методов доступа значительно увеличивает размер файлов классов. Однако:

  • статика зла
  • предпочитают немного OO, и инкапсулировать с поведенческими методами, а не писать структуры с бессмысленными шаблонным
  • вы, вероятно, можно найти обфускатор, который будет компактнее объектный код для вас
Смежные вопросы