- Пакеты классов, package
- Импорт пакетов и классов, import
- Статический импорт классов, import static
- Пример использования классов разных пакетов
- Листинг базового класса, BaseClass.java
- Листинг наследника, Inheritor.java
- Листинг основного класса, MainPackage.java
- Java — class, utils, interface, variables — naming convention — ideas and examples
- Class naming ideas in java — keywords:
- Class naming ideas in java — services:
- Class naming ideas in java — collections / objects:
- Utils class naming ideas in java:
- Interface naming ideas in java:
- Constants
- Enum naming conventions
- Introduction to java.util Package
- Let’s begin.
- Let’s first understand package
- java.util
- What is use of java.util package?
- Some important and generally used classes
Пакеты классов, package
Пакет package позволяет логически объединить классы в наборы. Основные классы java входят в пакет java.lang. Различные вспомогательные классы располагаются в пакете в java.util. Классы для ввода и вывода входят в пакет java.io, а классы для работы в сети – в java.net. Некоторые их этих пакетов содержат подпакеты. Так, например, java.lang содержит два специализированных пакета java.lang.reflect и java.lang.ref, а java.util содержит подпакет java.util.zip, который включает классы для работы с ZIPархивами.
Каждый класс имеет как простое имя, данное ему в определении, так и полное имя, включающее имя пакета, в который он входит. Например, класс String является частью пакета java.lang, а его полное имя – java.lang.String.
Структура пакетов в точности отображает структуру файловой системы. Все файлы с исходными кодами (java-класс) и байт-кодами (расширением class), образующие один пакет, хранятся в одном каталоге файловой системы. Подпакеты образуют подкаталоги этого каталога. Каждый пакет создает единое пространство имен namespace. Это означает, что все имена классов и интерфейсов в пакете должны быть уникальны. Имена в разных пакетах могут совпадать, но это будут разные программные модули. Организация классов в виде пакетов позволяет избежать конфликта имен между классами. В пакете дублирование имен классов не допускается. Принадлежность класса к пакету позволяет гарантировать однозначность имен.
Чтобы указать, что класс принадлежит определенному пакету, следует использовать директиву package, после которой указывается наименование (путь) пакета :
package company.common; public class HelloWorld < public static void main(String[] args)< System.out.println ("Привет, мир!"); >>
В данном примере класс HelloWorld располагается в пакете company.common. Физически это директория «$/company/common». При создании класса в среде разработки IDE (например, Eclipse) следует указать наименование пакета, тогда IDE самостоятельно при необходимости создаст каталог на жестком диске и разместит новый класс в этом каталоге.
Можно package в классе не определять. В этом случае класс будет находиться в пакете по умолчанию, который не имеет имени «$», т.е. класс будет располагаться в корневой директории исходных кодов проекта.
Наименование пакета может быть любым, но необходимо соблюдать его уникальность в проекте. Соглашение «Code Conventions» рекомендует записывать имена пакетов строчными буквами. Тогда они не будут совпадать с именами классов, которые, по соглашению, начинаются с прописной буквы.
Стандартная библиотека Java API включает сотни классов. Каждый программист в ходе работы создает десятки своих классов. Множество классов быстро увеличивается. Java позволяет отдельные классы, решающие определенную задачу (или несколько задач), объединять в библиотеки классов в виде архивов jar. Но эти библиотеки классов, кроме стандартных, не являются частью языка java.
Импорт пакетов и классов, import
Для использования класса в приложении, его следует подключить. Так расположенный в пакете java.util класс Scanner можно подключить следующим способом :
java.util.Scanner in = new java.util.Scanner(System.in);
В этом примере при определении/создании нового объекта был указыван пакет (полный путь к файлу). Однако данный подход не всегда удобен, и в качестве альтернативы можно импортировать пакеты и классы в приложение с помощью директивы import, которая указывается после директивы package :
package company.common; import java.util.Scanner; public class HelloWorld < public static void main(String[] args)< Scanner in = new Scanner(System.in); >>
Директива import указывается в самом начале кода, после чего идет имя подключаемого класса (класс Scanner в примере).
В примере был подключен только один класс. Однако пакет java.util содержит большое количество разных классов. И чтобы не подключать по отдельности каждый класс, можно сразу подключить весь пакет :
import java.util.*; // импорт всех классов из пакета java.util
Теперь можно использовать любой класс из пакета java.util.
Возможна ситуация, когда используется два класса с одинаковым наименованием, но из разных пакетов. Это относится, например, к классам Date, которые имеются в пакете java.util и в пакете java.sql, или классам List пакетов java.util и java.awt. И если необходимо одновременно использовать оба эти класса, то необходимо указывать полный путь к классам в пакете :
java.util.Date udate = new java.util.Date(); java.sql.Date sdate = new java.sql.Date();
Следует сказать, что основные классы из пакета java.lang (например, String) подключаются автоматически и не требуют «импортирования».
Статический импорт классов, import static
В java можно использовать статический импорт. Для этого вместе с директивой import используется модификатор static :
package company.common; import static java.lang.Math.*; import static java.lang.System.*; public class HelloWorld < public static void main(String[] args) < double result = sqrt(20); out.println(result); >>
В примере определяется статический импорт классов System и Math, которые имеют статические методы. Определение статического импорта позволяет использовать статические методы без названия класса. В примере статическая функция sqrt(20) (можно и Math.sqrt(20)), возвращает квадратный корень числа. То же самое относится и к классу System, в котором определен статический объект out, поэтому можно его использовать без указания класса, если выполнен статический импорт класса System.
Пример использования классов разных пакетов
Рассмотрим простенький проект PackageExample, включающий 3 java-класса. Два java-класса располагаются в одном пакете «ru.java.online», а третий — в другом «ru.java.online.classes». Структура проекта представлена на следующем скриншоте:
Листинг базового класса, BaseClass.java
Базовый класс включает 2 поля (id, name) и методы get/set. В конструкторе значения полей инициализируется.
package ru.java.online; public class BaseClass < private String protected String name = null; public BaseClass() < this.id = "default"; this.name = "Наименование не определено"; >public String getId() < return id; >public void setId(String id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >@Override public String toString() < return this.getClass().getName() + "\n\t"; > >
Переопределенная функция toString() возвращает наименование класса и значение полей.
Листинг наследника, Inheritor.java
Класс Inheritor.java наследует свойства базового класса BaseClass.java. Поскольку классы располаются в разных пакетах, то базовый класс необходимо импортировать.
package ru.java.online.classes; import ru.java.online.BaseClass; public class Inheritor extends BaseClass < public Inheritor() < this.name = "Наследник"; this.setId("Первый"); >>
Листинг основного класса, MainPackage.java
Основной класс включает статический метод main. Поскольку данный класс не «видит» наследника, то его приходится импортировать.
package ru.java.online; import ru.java.online.classes.Inheritor; public class MainPackage < public MainPackage() < BaseClass bc = new BaseClass(); Inheritor ir = new Inheritor(); System.out.println (bc.toString()); System.out.println (ir.toString()); >public static void main(String[] args) < new MainPackage(); System.exit(0); >>
Результат выполнения данной программы выводится в консоль в следующем виде :
ru.java.online.BaseClass: ru.java.online.classes.Inheritor:
Как видно по результату выполнения программы наименование класса включает пакет.
Говоря о полном наименовании класса следует отметить, что оно включает не только наименование пакета и наименование класса, но также и класс-загрузчик classloader. Подробно о классах-загрузчиках можно почитать здесь.
Java — class, utils, interface, variables — naming convention — ideas and examples
Bartek
Class or fields should be named as noun.
Class naming ideas in java — keywords:
- Reader
- Writer
- Builder
- Mapper
- Executor
- Changer
- Manager
- Service
- Component
- Repository
- Exchanger
- Context
- Status
- Consumer
- Producer
- Optimizer
- Scheduler
- Crawler
- Path
- File
- State
- Synchronizer
- Analyzer
- Collector | Collectors
- Provider
- Converter
- Fetcher
- Detector
- Processor
- Generator
Class naming ideas in java — services:
- ContextManager
- ConnectionManager
- ContextProvider
- FileScheduler
- FileGenerator
- FileProducer
- FileConsumer
- UserRepository
- UserService
Class naming ideas in java — collections / objects:
- Object
- List (ArrayList, LinkedList, Vector)
- Queue (PriorityQueue)
- Stack
- Map (HashMap, Hashtable)
- Set (HashSet, TreeSet)
Utils class naming ideas in java:
- FilesUtil
- PathsUtil
- StringUtil
- MathUtil
- Base64Util
- DateTimeUtil
- DomainUrlUtil
- HtmlUtil
- IpUtil
- LoggerUtil
- PageContextUtil
- PathsUtil
- RandomUtil
- SqlUtil
- UrlConverterUtil
- Files
- Config
Interface naming ideas in java:
- Comparable
- Comparable
- Serializable
- Runnable
- Callable
- ConcurrentNavigableMap
- ConcurrentMap
- Delayed
- BlockingDeque
- BlockingQueue
- Executor
- CompletionService
- CompletionStage
- ExecutorService
- Future
- RejectedExecutionHandler
- RunnableFuture
- RunnableScheduledFuture
- ScheduledExecutorService
- ScheduledFuture
Constants
Enum naming conventions
- CategoryType
- CategoryTypes
- CategoryEnum
- DocumetMode (read, write)
- UserRole (admin, moderator)
Also take a look at post with java methods naming convention and examples here:
Introduction to java.util Package
Hello all👋 I hope you are doing well. This is going to be a short introductory article about the most useful package in Java i.e., java.util package.
Let’s begin.
Let’s first understand package
What is a package?
In short a Java package is collection of similar type of classes.
A Package can be defined as a collection of similar types of classes, interfaces and sub-packages in the form of directory structure. You can read more about packages in one of my article here.
java.util
The basic utility classes required to a programmer are present in this package. It contains the collections framework, legacy collection classes, event model, date and time facilities, internationalization, and miscellaneous utility classes (a string tokenizer, a random-number generator, and a bit array). To use any class you have to import java.util package at top of the program:-
import java.util.Class_name;
To make it easy let’s take an example, let’s suppose you want to print date and time in your program you will need to import java.util package.
import java.util.Date; //or //import java.util.*; public class Demo public static void main(String[] args) Date date = new Date(); System.out.println("The date is : " + date); > >
You can run your code online here
What is use of java.util package?
- For Java collections.
- For random number generation.
- For Calendar.
- For string parsing.
- For internationalization support by using the internationalization supported classes from java.util package (Locale).
Some important and generally used classes
Some important and generally used classes and interfaces which are present inside the java.util package are:-
- Arrays :- This class contains various methods for manipulating arrays.
- ArrayList :- This class is resizable-array implementation of the List interface.
- Collections :- This class consists exclusively of static methods that operate on or return collections.
- Date :- This class represents a specific instant in time, with millisecond precision.
- EventObject :- This class is the root class from which all event state objects shall be derived.
- Formatter :- An interpreter for printf-style format strings.
- HashMap :- The HashMap class Hash table based implementation of the Map interface.
- HashSet :- The HashSet class implements the Set interface, backed by a hash table (actually a HashMap instance).
- HashTable :- The HashTable class implements a hash table, which maps keys to values.
- LinkedList :- The LinkedList class Doubly-linked list implementation of the List and Deque interfaces.
- Locale :- A Locale object represents a specific geographical, political, or cultural region.
- Objects :- This class consists of static utility methods for operating on objects.
- Random :- An instance of this class is used to generate a stream of pseudorandom numbers.
- Scanner :- A simple text scanner which can parse primitive types and strings using regular expressions. (Read more)
- StringTokenizer :- The string tokenizer class allows an application to break a string into tokens.
- Timer :- A facility for threads to schedule tasks for future execution in a background thread.
- TimerTask :- A task that can be scheduled for one-time or repeated execution by a Timer.
- TreeMap :- The TreeMap class A Red-Black tree based NavigableMap implementation.
- TreeSet :- The TreeSet class A NavigableSet implementation based on a TreeMap.