Классы-оболочки Java являются Объектным представлением восьми примитивных типов в Java. Все классы-оболочки в Java являются неизменными и final. Начиная с Java 5 автоупаковка и распаковка позволяет легко конвертировать примитивные типы в их соответствующие классы-оболочки и наоборот.
В таблице ниже показаны примитивные типы и их классы-обертки в Java
Примитивный тип | Класс-обертка | Аргументы |
byte | Byte | byte или String |
short | Short | short или String |
int | Integer | int или String |
long | Long | long или String |
float | Float | float, double или String |
double | Double | double или String |
char | Character | char |
boolean | Boolean | boolean или String |
Зачем нужны классы-оболочки в Java?
Разработчиками языка Java было принято очень умное решение отделить примитивные типы и классы-оболочки, указав при этом следующее:
- Используйте классы-обертки, когда работаете с коллекциями.
- Используйте примитивные типы для того, чтобы ваши программы были максимально просты.
Еще одним важным моментом является то, что примитивные типы не могут быть null, а классы-оболочки — могут.
Также классы-оболочки могут быть использованы для достижения полиморфизма.
Вот простая программа, показывающая различные аспекты классов-оболочек в Java:
WrapperClasses.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package ua.com.prologistic.misc; import java.util.ArrayList; import java.util.List; public class WrapperClasses { private static void doSomething(Object obj){ } public static void main(String args[]){ int i = 10; char c = 'a'; //примитивы просты в использовании int j = i+3; //полиморфизм достигается с помощью классов-оболочек, мы не можем использовать примитивы здесь doSomething(new Character(c)); List<Integer> list = new ArrayList<Integer>(); //классы-оболочки могут быть использованы в коллекциях Integer in = new Integer(i); list.add(in); //Автоупаковка заботится о преобразовании примитива в соответственный класс-оболочку list.add(j); //классы-оболочки могут быть null in = null; } } |
Например, в оболочках для примитивных типов double и float (соответственно Double и Float) существует ряд констант. Для чего нужны эти константы? Как практически использовать их?