Apache Commons Lang 3.0 Beta была выпущена 4 августа, и проект, наконец, перешел на Java 5. API теперь обобщен, где применимо, используется varags, а некоторые функции, которые теперь поддерживаются самой Java, были удалены. Все это означает, что Lang 3.0 не имеет обратной совместимости с версиями 2.x. Чтобы сделать его работоспособным с предыдущими версиями, имя пакета было изменено на «apache.commons.lang3 », что позволяет Lang 3.0 находиться рядом с предыдущей версией Lang без каких-либо побочных эффектов. Вы можете скачать бета-версию Commons Lang 3.0 по этой ссылке .
В этой статье я расскажу вам о некоторых функциях, которые были добавлены или улучшены в версии 3.0.
ArrayUtils
Класс ArrayUtils позволяет вам выполнять операции с массивами, примитивными массивами и массивами примитивных оболочек. Этот класс существует с версии 2.0, и в выпуске rhw 3.0 он был обобщен, и был добавлен новый метод toArray. Давайте посмотрим на его особенности:
- Метод toArray
Это новый метод, добавленный в выпуске 3.0, который позволяет создавать универсальный массив, безопасный с точки зрения типов. Этот метод очень полезен, поскольку массивы нельзя создавать из универсального типа. Для получения дополнительной информации о том, почему массивы не могут быть созданы для универсального типа, обратитесь к этой ссылке . Этот метод использует тот факт, что varags реализованы как массивы, поэтому этот метод принимает varags типа T и возвращает массив T.String[] array = ArrayUtils.toArray("shekhar", "gulati");
- Метод toMap
Этот метод существует с 2.x дней и был обобщен в версии 3.0. Результатом генерирования этого метода является то, что вы получаете безопасные карты типов, следовательно, вы избегаете ClassCastExceptions. Например, в версиях 2.xMap map = ArrayUtils.toMap(new String[][]{{"shekhar","gulati"}});
- Другие методы, такие как subarray, addAll, add и т. Д., Также генерируются. Поэтому они теперь безопасны для типов.
Другое использование метода toArray — создание универсального пустого массива.
String[] array = ArrayUtils.<String> toArray();
Но в версии 3.0
Map<String, Integer> map2 = ArrayUtils.<String,Integer>toMap(new Object[][]{{"shekhar",1}});
CharSequenceUtils
Этот класс является новым классом, добавленным в версии 3.0. Этот класс позволяет вам выполнять нулевые безопасные операции над CharSequence . У него есть два метода:
- Метод длины
Этот метод дает вам длину любой CharSequence.CharSequenceUtils.length(CharBuffer.wrap("shekhar")); // return 7
CharSequenceUtils.length("shekhar"); // return 7
CharSequenceUtils.length(new StringBuilder("shekhar").append("gulati"));//return 13 - Метод subSequence
Этот метод возвращает новую CharSequence, начиная с char, указанного в индексе.CharSequenceUtils.subSequence("test", 1);
will return est
EnumUtils
Пакет «org.apache.commons.lang.enums» был удален из выпуска 3.0, потому что из версии 5 Java Enums предоставляются «из коробки». Был добавлен новый класс EnumUtils, который предоставляет вспомогательные методы для перечислений Java. Давайте посмотрим на некоторые из его методов:
- Метод getEnumMap
Этот метод дает вам карту имен перечислений и перечислений.enum ReportType{
REPORT1,REPORT2
}Map<String, ReportType> enumMap = EnumUtils.getEnumMap(ReportType.class);
- Метод getEnumList
Этот метод дает вам список перечислений для данного класса перечисления.List<ReportType> enumList = EnumUtils.getEnumList(ReportType.class);
- Метод isValidEnum
Этот метод проверяет, является ли данное имя перечисления допустимым для данного класса перечисления.EnumUtils.isValidEnum(ReportType.class, "REPORT1");// will return true
EnumUtils.isValidEnum(ReportType.class, "REPORT3"); // return false
ObjectUtils
Методы класса ObjectUtils, такие как min, max, clone и т. Д., Генерируются, что делает их безопасными для типов. Добавлен новый метод firstNonNull (T …). Этот метод возвращает первое значение в массиве, которое не является нулевым.
ObjectUtils.firstNonNull(null, null,null,null, "abc", null,"def");//will return "abc"
StringUtils
StringUtils не нуждается в представлении. Я думаю, что каждый разработчик Java знает это. Некоторые сигнатуры методов были изменены для поддержки CharSequence вместо String. Например, isEmpty (String) изменяется на isEmpty (CharSequence). Также были добавлены некоторые новые методы:
- Метод stripAccents
Этот метод удаляет акценты из строки. Этот метод работает с методом JDK 1.6 и не будет работать в версии 1.5.StringUtils.stripAccents("&ecute;clair") ; //will return "eclair"
- Метод normalizeSpace
Эта функция возвращает входную строку с пробелами, нормализованными с помощью trim (String), чтобы удалить начальные и конечные пробелы, а затем заменить последовательности пробельных символов одним пробелом.StringUtils.normalizeSpace(" a b c ") ; // will return "a b c"
Это некоторые из функций, которые были добавлены или улучшены в бета-версии 3.0. Я расскажу о
других новых функциях во второй части этой серии на Commons-Lang 3.0. Некоторые другие новые функции связаны с поддержкой параллелизма и подключаемым API для преобразования текста.