Автоупаковка, автораспаковка

В J2SE 5 были введены многочисленные возможности. Одна из этих функциональностей — автоупаковка(Autoboxing) и автораспаковка(Unboxing), возможность, которую я использую почти ежедневно, даже не зная об этом. Это часто удобный(особенно когда используются коллекции), но однажды происходят неприятные сюрпризы. В этом блоге я покажу старый(но интересный для меня) случай с ошибкой NoSuchMethodError, получающий из-за смешивании классов, скомпилированных до автоупаковки/автораспаковки, с классами скомпилированных после.
Следующий код демонстрирует класс(Sum), мог бы быть написан до J2SE 5. Он перегружает метод add, так чтобы он смог добавлять в итоговую сумму различные типы данных, переданные в него.
import java.util.ArrayList;

public class Sum
{
   private double sum = 0;

   public void add(short newShort)
   {
      sum += newShort;
   }

   public void add(int newInteger)
   {
      sum += newInteger;
   }

   public void add(long newLong)
   {
      sum += newLong;
   }

   public void add(float newFloat)
   {
      sum += newFloat;
   }

   public void add(double newDouble)
   {
      sum += newDouble;
   }

   public String toString()
   {
      return String.valueOf(sum);
   }
}

До unboxing и autoboxing, любой клиент использующий Sum должен будет обеспечить примитивы для методов add или если они имеют возможность перевести объекты в примитивные типы, они должны будут сделать это, до вызовов методов add. Пример как это можно реализовать:

Автоупаковка и распаковка в Java.

В этой статье мы рассмотрим такую функцию в Java как автоупаковка/распаковка.
Автоупаковка и распаковка это функция преобразования примитивных типов в объектные и наоборот.

Весь процесс выполняется автоматически средой выполнения Java (JRE). Но следует быть осторожным при реализации этой функции, т.к. Она может влиять на производительность вашей программы.