Apache commons java как добавить
Перейти к содержимому

Apache commons java как добавить

  • автор:

How To Install Java Artifact org.apache.commons.commons-lang3 v3.3

How To Install Java Artifact org.apache.commons.commons-lang3 In Version 3.3

To install the Apache Commons Lang artifact in version 3.3 add the following dependency to your pom.xml file for Maven Project.

The dependency needs to be added in the dependencies section which is located in the main project tag of the pom.xml file. The sample pom.xml file that uses Apache Commons Lang dependency could look as follows:

Other dependency snippets for Gradle, SBT, Ivy, Grape, Leiningen, and Buildr

Below you can find code snippets for other project build tools like Gradle, SBT, Ivy, Grape, Leiningen, and Buildr.

Как установить библиотеку Apache Commons для IntelliJ IDEA?

commons-lang3-3.1-bin.zip был загружен из commons.apache.org и извлечен в папку с java jdk/lib . Мне нужно импортировать Секундомер из этой библиотеки. Как это сделать для IntelliJ IDEA?

Обновление: Почему intelliJ просто не добавляет pom.xml в существующий проект, не пытаясь его удалить? Изображение 298075

Решено так:

Скачан lib из http://commons.apache.org/intelliJ > Структура проектa > Зависимости > + > Библиотекa > путь к lib из commons.apache.org

PS. Все еще ищут способ решить эту проблему с помощью Maven.

Не удалось решить с помощью Maven: Изображение 298081

Невозможно выполнить проект. Должен ли я, вероятно, настроить его каким-то образом.

Введение в Apache Commons Lang 3

Краткий и практический обзор библиотеки Apache Commons Lang3.

  • Автор записи

1. Обзор

Библиотека Apache Commons Lang 3 -это популярный полнофункциональный пакет служебных классов, направленный на расширение функциональности Java API .

Репертуар библиотеки довольно богат, начиная от обработки строк, массивов и чисел, отражения и параллелизма, до реализации нескольких упорядоченных структур данных, таких как пары и тройки (обычно известные как кортежи ).

В этом уроке мы глубоко погрузимся в самые полезные классы утилит библиотеки .

2. Зависимость Maven

Как обычно, чтобы начать использовать Apache Commons Lang3, нам сначала нужно добавить зависимость Maven :

3. Класс StringUtils

Первый класс утилит, который мы рассмотрим в этом вводном обзоре, – это StringUtils .

Как следует из его названия, StringUtils позволяет нам выполнять множество операций с нулевыми значениями string , которые дополняют/расширяют те, которые java.lang.Строка предоставляет из коробки .

Давайте начнем демонстрировать набор служебных методов , которые выполняют несколько проверок для данной строки , например, определяют, является ли строка пустой, пустой, строчной, прописной, буквенно-цифровой и так далее:

Конечно, класс StringUtils реализует множество других методов, которые мы опустили здесь для простоты.

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

Те, которые мы рассмотрели выше, действительно просты, поэтому модульные тесты должны быть понятны сами по себе.

4. Класс ArrayUtils

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

Давайте начнем с двух перегруженных реализаций метода toString () , который возвращает строку представление данного массива и конкретную строку , когда массив равен нулю:

Далее у нас есть методы hashcode() и to Map () .

Первый генерирует пользовательскую реализацию hashCode для массива, в то время как последний преобразует массив в карту :

Наконец, давайте рассмотрим методы is Same Length() и indexOf () .

Первый используется для проверки, имеют ли два массива одинаковую длину, а второй-для получения индекса данного элемента:

Как и в случае с классом StringUtils , ArrayUtils реализует гораздо больше дополнительных методов. Вы можете узнать больше о них в этом уроке .

В данном случае мы продемонстрировали только самые репрезентативные из них.

5. Класс NumberUtils

Еще одним ключевым компонентом Apache Commons Lang 3 является класс NumberUtils .

Как и ожидалось, класс предоставляет большое количество полезных методов, направленных на обработку и манипулирование числовыми типами .

Давайте рассмотрим перегруженные реализации метода compare () , который сравнивает равенство различных примитивов, таких как int и long :

Кроме того, существуют реализации compare () , которые работают с byte и short , которые работают очень похоже на приведенные выше примеры.

Далее в этом обзоре приведены методы create Number() и isDigit () .

Первый позволяет нам создать числовое представление string , в то время как второй проверяет, состоит ли string только из цифр:

Когда дело доходит до поиска смешанных и максимальных значений поставляемого массива, класс NumberUtils обеспечивает сильную поддержку этих операций с помощью перегруженных реализаций методов min() и max() :

6. Класс Фракций

Работа с дробями-это все прекрасно и хорошо, когда мы используем ручку и лист бумаги. Но должны ли мы проходить через сложности этого процесса при написании кода? Не совсем.

Класс Fraction делает сложение, вычитание и умножение дробей на одном дыхании :

Хотя операции с дробями, безусловно, не являются самой частой задачей, которую нам придется решать в нашей повседневной работе по разработке, класс Fraction обеспечивает ценную поддержку для выполнения этих операций простым способом.

7. Класс SystemUtils

Иногда нам нужно получить некоторую динамическую информацию о различных свойствах и переменных базовой платформы Java или операционной системы.

Apache Commons Lang 3 предоставляет SystemUtils класс для выполнения этого безболезненным способом .

Рассмотрим, например, методы getJavaHome() , getUserHome() и isJavaVersionAtLeast() :

Существует несколько дополнительных служебных методов, которые реализует класс SystemUtils . Мы опустили их, чтобы сократить примеры.

8. Классы ленивой инициализации и компоновщика

Одним из наиболее привлекательных аспектов Apache Commons Lang3 является реализация некоторых хорошо известных шаблонов проектирования, включая шаблоны lazy-initialization и builder .

Например, предположим, что мы создали дорогой класс User (не показан для краткости) и хотим отложить его создание до тех пор, пока он действительно не понадобится.

В таком случае все, что нам нужно сделать, это расширить параметризованный LazyInitializer абстрактный класс и переопределить его initialize() метод:

Теперь, если мы хотим получить ваш дорогостоящий объект User , когда это необходимо, мы просто вызываем метод get() UserInitializer/|:

Метод get() является реализацией идиомы двойной проверки (потокобезопасной) для поля экземпляра, как указано в “Эффективной Java” Джошуа Блоха, пункт 71 :

Кроме того, Apache Commons Lang 3 реализует класс HashCodeBuilder , который позволяет нам генерировать реализации hashCode () , предоставляя построителю различные параметры на основе типичного fluent API:

Мы можем сделать что-то подобное с классом BasicThreadFactory и создать потоки демонов с шаблоном именования и приоритетом:

9. Класс ConstructorUtils

Отражение-первоклассный гражданин в Apache Commons Lang 3.

Библиотека включает в себя несколько классов отражения, что позволяет нам рефлексивно обращаться к полям и методам классов и манипулировать ими.

Например, предположим, что мы реализовали наивный класс User domain:

Предполагая , что его параметризованный конструктор является public , мы можем легко получить к нему доступ с помощью класса ConstructorUtils :

В качестве альтернативы стандартному созданию экземпляров классов с помощью конструкторов мы можем рефлексивно создавать экземпляры User , просто вызывая методы invokeConstructor() и invokeExactConstructor() :

10. Класс FieldUtils

Аналогично, мы можем использовать методы класса FieldUtils для рефлексивного чтения/записи полей класса .

Предположим, что мы хотим получить поле класса User или, в конечном счете, поле, которое класс наследует от суперкласса.

В таком случае мы можем вызвать метод getField() :

В качестве альтернативы, если бы мы хотели использовать более ограничительную область отражения и получить только поле, объявленное в классе User , а не унаследованное от суперкласса , мы бы просто использовали метод getDeclaredField() :

Кроме того, мы можем использовать метод getAllFields() для получения количества полей отраженного класса и записать значение в объявленное поле или поле, определенное в иерархии с помощью методов writeField() и writeDeclaredField() :

11. Класс MethodUtils

В том же духе мы можем использовать отражение методов класса с помощью класса MethodUtils .

В этом случае видимость метода User class’ getName() является public . Таким образом, мы можем получить к нему доступ с помощью метода getAccessibleMethod() :

Когда дело доходит до рефлексивного вызова методов, мы можем использовать методы invokeExactMethod() и invokeMethod() :

12. Изменяемый класс Объектов

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

Кроме того, для создания изменяемых классов требуется много шаблонного кода, который может быть сгенерирован большинством IDE с помощью автоматически сгенерированных установщиков.

С этой целью Apache Commons Lang3 предоставляет класс MutableObject , простой класс-оболочку для создания изменяемых объектов с минимальной суетой:

Конечно, это всего лишь пример того, как использовать Изменяемый объект класс.

Как правило, мы всегда должны стремиться создавать неизменяемые классы или, в худшем случае, обеспечивать только необходимый уровень изменчивости .

13. Класс MutablePair

Интересно, что Apache Commons Lang3 обеспечивает сильную поддержку кортежей в виде пар и троек.

Итак, предположим, что нам нужно создать изменяемую пару упорядоченных элементов.

В таком случае мы бы использовали класс MutablePair :

Самая важная деталь, которую стоит подчеркнуть здесь, – это чистый API класса.

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

14. Класс ImmutablePair

Неудивительно, что существует также неизменяемая параллельная реализация класса MutablePair , называемая ImmutablePair :

Как и следовало ожидать от неизменяемого класса, любая попытка изменить внутреннее состояние пары с помощью метода setValue() приведет к созданию исключения UnsupportedOperationException|/.

15. Тройной Класс

Последний служебный класс, который мы рассмотрим здесь, – это Triple .

Поскольку класс является абстрактным, мы можем создать Triple экземпляры с помощью метода of() static factory:

Существуют также конкретные реализации как для изменяемых, так и для неизменяемых троек с помощью классов MutableTriple и ImmutableTriple .

Мы можем создавать их экземпляры с помощью параметризованных конструкторов, а не с помощью статического заводского метода.

В этом случае мы просто пропустим их, так как их API-интерфейсы очень похожи на интерфейсы классов MutablePair и ImmutablePair .

16. Заключение

В этом уроке мы подробно рассмотрели некоторые из наиболее полезных классов утилит, которые предоставляет Apache Commons Lang3 off the shelf .

Библиотека реализует множество других полезных классов, на которые стоит обратить внимание . Здесь мы только что продемонстрировали наиболее полезные из них, основанные на довольно самоуверенном критерии.

Для получения полного API библиотеки, пожалуйста, проверьте официальные Javadocs .

Как обычно, все примеры кода, показанные в этом руководстве, доступны на GitHub .

Введение в Apache Commons Lang 3

The Apache Commons Lang 3 libraryis a popular, full-featured package of utility classes, aimed at extending the functionality of the Java API.

Репертуар библиотеки довольно богат: от операций со строками, массивами и числами, отражения и параллелизма до реализаций нескольких упорядоченных структур данных, таких как пары и тройки (обычно известные какtuples).

В этом руководствеwe’ll take a deep dive at the library’s most useful utility classes.

2. Зависимость Maven

Как обычно, чтобы начать использовать Apache Commons Lang 3, нам сначала нужно добавитьMaven dependency:

3. КлассStringUtils

Первый служебный класс, который мы рассмотрим в этом вводном обзоре, — этоStringUtils..

Как следует из названия,StringUtils allows us to perform a bunch of null-safe strings operations that complement/extend the ones that java.lang.String provides out of the box.

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

Конечно, классStringUtils реализует множество других методов, которые мы здесь для простоты опустили.

Для некоторых других дополнительных методов, которые проверяют или применяют какой-либо алгоритм преобразования к заданномуstring, пожалуйста,check this tutorial.

Те, которые мы рассмотрели выше, действительно просты, поэтому модульные тесты не требуют пояснений.

4. КлассArrayUtils

The ArrayUtils class implements a batch of utility methods that allow us to process and check arrays in many different shapes and forms.

Давайте начнем с двух перегруженных реализаций методаthe toString(), который возвращает представлениеstring данногоarray и конкретныйstring, когдаarray имеет значение NULL:

Далее у нас есть методыhasCode() иtoMap().

Первый генерирует настраиваемую реализациюhashCode дляarray,, а второй преобразуетarray вMap:

Наконец, давайте посмотрим на методыisSameLength() иindexOf().

Первый используется для проверки, имеют ли два массива одинаковую длину, а второй для получения индекса данного элемента:

Как и в классеStringUtils, вArrayUtils реализовано гораздо больше дополнительных методов. Вы можете узнать о них больше вthis tutorial.

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

5. КлассNumberUtils

Другой ключевой компонент Apache Commons Lang 3 — это классNumberUtils.

Как и ожидалось,the class provides an extensive number of utility methods, aimed at processing and manipulating numeric types.

Давайте посмотрим на перегруженные реализации методаcompare(), который сравнивает равенство различных примитивов, таких какint иlong:

Кроме того, существуют реализацииcompare(), которые работают сbyte иshort, которые работают очень похоже на приведенные выше примеры.

Следующими в этом обзоре идут методыcreateNumber() иisDigit().

Первый позволяет нам создать числовое представлениеstring, а второй проверяет, состоит лиstring только из цифр:

Когда дело доходит до поиска смешанных и максимальных значений предоставленного массива, классNumberUtils обеспечивает сильную поддержку этих операций через перегруженные реализации методовmin() иmax():

6.Fraction Class

Работать с дробями — это нормально, когда мы используем ручку и лист бумаги. Но должны ли мы пройти через все сложности этого процесса при написании кода? На самом деле, нет.

The Fraction class makes adding, subtracting and multiplying fractions in a breeze:

Хотя операции с дробями, безусловно, не самая частая задача, с которой нам придется сталкиваться в нашей повседневной работе по разработке, классFraction обеспечивает ценную поддержку для выполнения этих операций простым способом.

7. КлассSystemUtils

Иногда нам нужно получить некоторую динамическую информацию о различных свойствах и переменных базовой платформы Java или операционной системы.

Apache Commons Lang 3 provides the SystemUtils class for accomplishing this in a painless way.

Рассмотрим, например, методыgetJavaHome(),getUserHome() иisJavaVersionAtLeast():

Существует несколько дополнительных служебных методов, которые реализует классSystemUtils. Мы опустили их, чтобы примеры были краткими.

8. Ленивая инициализация и классы построителя

One of Apache Commons Lang 3’s most appealing facet is the implementation of some well-known design patterns, including the lazy-initialization and builder patterns.

Например, предположим, что мы создали дорогостоящий классUser (не показан для краткости) и хотим отложить его создание до тех пор, пока он действительно не понадобится.

В таком случае все, что нам нужно сделать, это расширить параметризованный абстрактный классLazyInitializer и переопределить его методinitialize():

Теперь, если мы хотим получить наш дорогостоящий объектUser, когда он потребуется, мы просто вызываем методUserInitializer’s get():

The get() method is an implementation of the double-check idiom (thread-safe) for an instance field, as specified inJoshua Bloch’s “Effective Java”, item 71:

Кроме того, Apache Commons Lang 3 реализует классHashCodeBuilder, который позволяет нам создавать реализацииhashCode(), предоставляя построителю различные параметры на основе типичного свободного API:

Мы можем сделать что-то подобное с классомBasicThreadFactory и создать потоки демона с шаблоном именования и приоритетом:

9. КлассConstructorUtils

Reflection — это первоклассный гражданин в Apache Commons Lang 3.

Библиотека включает в себя несколько классов отражений, что позволяет нам рефлексивно обращаться к полям и методам классов и манипулировать ими.

Например, предположим, что мы реализовали простой доменный классUser:

Предполагая, что его параметризованный конструктор —public, мы можем легко получить к нему доступ с помощью классаConstructorUtils:

В качестве альтернативы стандартному созданию экземпляров класса через конструкторы, мы можем рефлексивно создавать экземплярыUser, просто вызывая методыinvokeConstructor() иinvokeExactConstructor():

10. КлассFieldUtils

Аналогичноwe can use the methods of the FieldUtils class for reflectively reading/writing class fields.

Предположим, мы хотим получить поле классаUser или, в конечном итоге, поле, которое класс наследует от суперкласса.

В таком случае мы можем вызвать методgetField():

В качестве альтернативыif we’d want to use a more restrictive reflection scope, and only get a field declared in the User class, and not inherited from a superclass, мы бы просто использовали методgetDeclaredField():

Кроме того, мы можем использовать методgetAllFields() для получения количества полей отраженного класса и записать значение в объявленное поле или поле, определенное в иерархии с помощьюwriteField() иwriteDeclaredField() методы:

11. КлассMethodUtils

Точно так же мы можем использовать отражение в методах класса с классомMethodUtils.

В этом случае видимость методаgetName() классаUser составляетpublic. Итак, мы можем получить к нему доступ с помощью методаgetAccessibleMethod():

Когда дело доходит до рефлексивного вызова методов, мы можем использовать методыinvokeExactMethod() иinvokeMethod():

12. КлассMutableObject

While immutability is a key feature of good object-oriented software that we should default to in every possible case, к сожалению, иногда нам приходится иметь дело с изменяемыми объектами.

Кроме того, создание изменяемых классов требует большого количества стандартного кода, который может быть сгенерирован большинством IDE с помощью автоматически созданных сеттеров.

С этой целью Apache Commons Lang 3 предоставляет классMutableObject, простой класс-оболочку для создания изменяемых объектов с минимальной суетой:

Конечно, это всего лишь пример того, как использовать классMutableObject.

Как показывает опыт,we should always strive to create immutable classes, or in the worst case, provide only the required level of mutability.

13. КлассMutablePair

Интересно, что Apache Commons Lang 3 обеспечивает мощную поддержку кортежей в виде пар и троек.

Итак, предположим, что нам нужно создать изменяемую пару упорядоченных элементов.

В таком случае мы бы использовали классMutablePair:

Наиболее важная деталь, на которую стоит обратить внимание, — это чистый API класса.

Это позволяет нам устанавливать и получать доступ к левому и правому объектам, обернутым парой, через стандартные методы установки / получения.

14. КлассImmutablePair

Неудивительно, что существует также неизменяемая реализация классаMutablePair, называемаяImmutablePair:

Как и следовало ожидать от неизменяемого класса, любая попытка изменить внутреннее состояние пары с помощью методаsetValue() приведет к сбору исключенияUnsupportedOperationException.

15. The Triple Classс

Последний служебный класс, который мы рассмотрим здесь, — этоTriple.

Поскольку класс является абстрактным, мы можем создавать экземплярыTriple, используя статический фабричный методof():

Существуют также конкретные реализации как изменяемых, так и неизменяемых троек через классыMutableTriple иImmutableTriple.

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

В этом случае мы просто пропустим их, так как их API очень похожи на API классовMutablePair иImmutablePair.

16. Заключение

In this tutorial, we took an in-depth look at some of the most useful utility classes that Apache Commons Lang 3 provides *off полка *.

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

Чтобы получить полный API библиотеки, проверьтеofficial Javadocs.

Как обычно, все образцы кода, показанные в этом руководстве, доступны в течениеGitHub.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *