Чтение онлайн

на главную - закладки

Жанры

Программирование на Java

Вязовик Н.А.

Шрифт:

System.out.println("Exception: " + e);

} catch(InstantiationException e) {

System.out.println("Exception: " + e);

}

}

}

}

Пример 13.3.

Если запустить эту программу, на экран будет выведено следующее:

look for class for: demo.lang.Automobile

creating vehicle...

create vehicle: class demo.lang.Automobile

Automobile go!

look for class for: demo.lang.Truck

creating vehicle...

Exception: java.lang.InstantiationException

look for class for: demo.lang.Tank

Class not found: java.lang.ClassNotFoundException: demo.lang.Tank

Пример 13.4.

В этом примере делается попытка создать с помощью reflection три объекта. Имена классов, от которых они должны быть порождены, записаны в массив vehicleNames. Объект класса Automobile был успешно создан, причем, дальнейшая работа с ним велась через интерфейс Vehicle. Класс Truck был найден, но при попытке создания объекта было брошено, а затем обработано исключение java.lang.InstantiationException, поскольку конструктор без параметров отсутствует. Класс java.lang.Tank определен не был и поэтому при попытке получить соответствующий ему объект Class было выброшено исключение java.lang.ClassNotFoundException.

Классы-обертки

Во многих случаях предпочтительней работать именно с объектами, а не с примитивными типами. Так, например, при использовании коллекций просто необходимо значения примитивных типов представлять в виде объектов.

Для этих целей и предназначены так называемые классы-обертки. Для каждого примитивного типа Java существует свой класс-обертка . Такой класс является неизменяемым (если необходим объект, хранящий другое значение, его нужно создать заново), к тому же имеет атрибут final – от него нельзя наследовать класс. Все классы-обертки (кроме Void ) реализуют интерфейс Serializable, поэтому объекты любого (кроме Void ) класса-обертки могут быть сериализованы. Все классы-обертки содержат статическое поле TYPE, ссылающееся на объект Class, соответствующий примитивному оборачиваемому типу.

Также классы-обертки содержат статические методы для обеспечения удобного манипулирования соответствующими примитивными типами, например, преобразование к строковому виду.

В таблице 13.1 приведены примитивные типы и соответствующие им классы-обертки.

Таблица 13.1. Примитивные типы и соответствующие им классы-обертки.

Класс-обертка

Примитивный тип

Byte

byte

Short

short

Character

char

Integer

int

Long

long

Float

float

Double

double

Boolean

boolean

При этом классы-обертки числовых типов Byte, Short, Integer, Long, Float, Double наследуются от одного класса – Number. В нем объявлены методы, возвращающие числовое значение во всех числовых форматах Java ( byte, short, int, long, float и double ).

Все классы-обертки реализуют интерфейс Comparable. Все классы-обертки числовых типов имеют метод equals(Object), сравнивающий примитивные значения объектов.

Рассмотрим более подробно некоторые из классов-оберток.

Integer

Наиболее часто используемые статические методы:

* public static int parseInt(String s) – преобразует строку, представляющую десятичную запись целого числа, в int ;

* public static int parseInt(String s, int radix) – преобразует строку, представляющую запись целого числа в системе счисления radix, в int.

Оба метода могут возбуждать исключение NumberFormatException, если строка, переданная на вход, содержит нецифровые символы.

Не следует путать эти методы с другой парой похожих методов:

public static Integer valueOf(String s)

public static Integer valueOf(String s, int radix)

Данные методы выполняют аналогичную работу, только результат представляют в виде объекта-обертки.

Существует также два конструктора для создания экземпляров класса Integer:

* Integer(String s) – конструктор, принимающий в качестве параметра строку, представляющую числовое значение.

* Integer(int i) – конструктор, принимающий числовое значение.

public static String toString(int i) – используется для преобразования значения типа int в строку.

Далее перечислены методы, преобразующие int в строковое восьмеричное, двоичное и шестнадцатеричное представление:

* public static String toOctalString(int i) – восьмеричное;

* public static String toBinaryString(int i) – двоичное;

* public static String toHexString(int i) – шестнадцатеричное.

Имеется также две статические константы:

* Integer.MIN_VALUE – минимальное int значение;

* Integer.MAX_VALUE – максимальное int значение.

Аналогичные константы, описывающие границы соответствующих типов, определены и для всех остальных классов-оберток числовых примитивных типов.

public int intValue возвращает значение примитивного типа для данного объекта Integer. Классы-обертки остальных примитивных целочисленных типов – Byte, Short, Long – содержат аналогичные методы и константы (определенные для соответствующих типов: byte, short, long ).

Рассмотрим пример:

public static void main(String[] args) {

int i = 1;

byte b = 1;

String value = "1000";

Integer iObj = new Integer(i);

Byte bObj = new Byte(b);

System.out.println("while i==b is " +

(i==b));

System.out.println("iObj.equals(bObj) is "

+ iObj.equals(bObj));

Long lObj = new Long(value);

System.out.println("lObj = " +

lObj.toString);

Long sum = new Long(lObj.longValue +

iObj.byteValue +

Поделиться:
Популярные книги

Англо-русский и русско-английский словарь ПК

Мизинина Ирина
Справочная литература:
словари
6.30
рейтинг книги
Англо-русский и русско-английский словарь ПК

Цикл романов "Целитель". Компиляция. Книги 1-17

Большаков Валерий Петрович
Целитель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цикл романов Целитель. Компиляция. Книги 1-17

Потерянный разум

Кара-Мурза Сергей Георгиевич
Научно-образовательная:
политика
5.00
рейтинг книги
Потерянный разум

Директива Джэнсона

Ладлэм Роберт
Детективы:
шпионские детективы
7.00
рейтинг книги
Директива Джэнсона

Открытая книга

Каверин Вениамин Александрович
Проза:
классическая проза
8.09
рейтинг книги
Открытая книга

Вторая жизнь майора. Цикл

Сухинин Владимир Александрович
Вторая жизнь майора
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Вторая жизнь майора. Цикл

Стархэвен

Силверберг Роберт
Фантастика:
научная фантастика
5.00
рейтинг книги
Стархэвен

"Самая страшная книга-4". Компиляция. Книги 1-16

Коллектив авторов
Самая страшная книга
Фантастика:
городское фэнтези
мистика
ужасы и мистика
5.00
рейтинг книги
Самая страшная книга-4. Компиляция. Книги 1-16

Газлайтер. Том 5

Володин Григорий Григорьевич
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Рубеж

Дяченко Марина и Сергей
Фантастика:
фэнтези
8.29
рейтинг книги
Рубеж

#Бояръ-Аниме. Газлайтер. Том 13

Володин Григорий Григорьевич
13. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
фэнтези
7.33
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 13

Законы исчезновения

Иванов Борис Федорович
8. Хроники XXXIII миров
Фантастика:
научная фантастика
космическая фантастика
детективная фантастика
5.83
рейтинг книги
Законы исчезновения

Серые сутки

Сай Ярослав
4. Медорфенов
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Серые сутки

Иисус неизвестный

Мережковский Дмитрий Сергеевич
Научно-образовательная:
философия
4.00
рейтинг книги
Иисус неизвестный