Guide des packages Java

Guide des packages Java

1. introduction

Dans ce rapide didacticiel, nous aborderons les bases des packages en Java. Nous allons voir comment créer des packages et accéder aux types que nous y plaçons.

Nous aborderons également les conventions de dénomination et leur relation avec la structure de répertoires sous-jacente.

Enfin, nous compilerons et exécuterons nos classes Java packagées.

2. Présentation des packages Java

En Java, noususe packages to group related classes, interfaces and sub-packages.

Les principaux avantages sont les suivants:

  • Rendre les types associés plus faciles à trouver - les packages contiennent généralement des types liés logiquement

  • Éviter les conflits de noms - un package nous aidera à identifier de manière unique une classe; par exemple, nous pourrions avoir des classescom.example.Application, ainsi quecom.example.Application

  • Contrôle de l'accès - nous pouvons contrôler la visibilité et l'accès aux types en combinant les packages et lesaccess modifiers

Voyons ensuite comment nous pouvons créer et utiliser des packages Java.

3. Créer un paquet

Pour créer un package,we have to use the package statement by adding it as the very first line of code in a file.

Plaçons un type dans un package nommécom.example.packages:

package com.example.packages;

It’s highly recommended to add each new type in a package. Si nous définissons des types et ne les plaçons pas dans un package, ils iront dans le packagedefault ou sans nom. En cela, nous perdons les avantages de l’utilisation de la structure de package et ne pouvons accéder à ces types à partir d’autres packages.

3.1. Conventions de nommage

Afin d'éviter les paquets portant le même nom, nous suivons certaines conventions de dénomination:

  • nous définissons notre packagenames in all lower case

  • les noms de paquets sont séparés par des points

  • les noms sont également déterminés parthe company or organization that creates them

Pour déterminer le nom du package en fonction d'une organisation, nous commençons généralement par inverser l'URL de l'entreprise. Ensuite, la convention de dénomination est définie par la société et peut inclure des noms de division et des noms de projet.

Par exemple, pour créer un package à partir dewww.example.com, inversons le processus:

com.example

Nous pouvons ensuite définir des sous-packages de ceci, commecom.example.packages oucom.example.packages.domain.

3.2. Structure du répertoire

Les packages en Java correspondent à une structure de répertoire.

Each package and subpackage has its own directory. Donc, pour le packagecom.example.packages, nous devrions avoir une structure de répertoires decom → example → packages.

La plupart des IDE vous aideront à créer cette structure de répertoires en fonction des noms de nos packages, nous n’avons donc pas à les créer à la main.

4. Utilisation de membres de package

Commençons par définir une classeTodoItem dans un sous-paquet nommédomain:

package com.example.packages.domain;

public class TodoItem {
    private Long id;
    private String description;

    // standard getters and setters
}

4.1. Importations

Afin d'utiliser notre classeTodoItem d'une classe dans un autre package, nous devons l'importer. Une fois importé, nous pouvons y accéder par son nom.

Nous pouvons importer un seul type d'un package ou utiliser un astérisque pour importer tous les types d'un package.

Importons l'intégralité du sous-packagedomain:

import com.example.packages.domain.*;

Maintenant, importons uniquement la classeTodoItem:

import com.example.packages.domain.TodoItem;

Le JDK et d'autres bibliothèques Java sont également livrés avec leurs propres packages. We can import pre-existing classes that we want to use in our project in the same manner.

Par exemple, importons l'interface Java coreList et la classeArrayList:

import java.util.ArrayList;import java.util.List;

Nous pouvons ensuite utiliser ces types dans notre application en utilisant simplement leur nom:

public class TodoList {
    private List todoItems;

    public void addTodoItem(TodoItem todoItem) {
        if (todoItems == null) {
            todoItems = new ArrayList();
        }
        todoItems.add(todoItem);
    }
}

Ici, nous avons utilisé nos nouvelles classes avec les classes Java Core, pour créer unList deToDoItems.

4.2. Nom complet

Parfois, nous pouvons utiliser deux classes portant le même nom provenant de packages différents. Par exemple, nous pourrions utiliser à la foisjava.sql.Date etjava.util.Date. When we run into naming conflicts, we need to use a fully qualified class name for at least one of the classes.

UtilisonsTodoItem avec un nom complet:

public class TodoList {
    private List todoItems;

    public void addTodoItem(com.example.packages.domain.TodoItem todoItem) {
        if (todoItems == null) {
            todoItems = new ArrayList();
        }todoItems.add(todoItem);
    }

    // standard getters and setters
}

5. Compilation avecjavac

Quand il est temps de compiler nos classes packagées, nous devons nous souvenir de notre structure de répertoires. En commençant dans le dossier source, nous devons dire àjavac où trouver nos fichiers.

Nous devons d'abord compiler notre classeTodoItem car notre classeTodoList en dépend.

Commençons par ouvrir une ligne de commande ou un terminal et accéder à notre répertoire source.

Maintenant, compilons notre classecom.example.packages.domain.TodoItem:

> javac com/example/packages/domain/TodoItem.java

Si notre classe se compile proprement, nous ne verrons aucun message d’erreur et un fichierTodoItem.class devrait apparaître dans notre répertoirecom/example/packages/domain.

Pour les types qui référencent des types dans d'autres packages, nous devrions utiliser l'indicateur-classpath pour indiquer à la commandejavac où trouver les autres classes compilées.

Maintenant que notre classeTodoItem est compilée, nous pouvons compiler nos classesTodoList etTodoApp:

>javac -classpath . com/example/packages/*.java

Encore une fois, nous ne devrions voir aucun message d'erreur et nous devrions trouver deux fichiers de classe dans notre répertoirecom/example/packages.

Exécutons notre application en utilisant le nom complet de notre classeTodoApp:

>java com.example.packages.TodoApp

Notre sortie devrait ressembler à ceci:

image

6. Conclusion

Dans ce court article, nous avons appris ce qu’est un paquet et pourquoi nous devrions l’utiliser.

Nous avons discuté des conventions de dénomination et du lien entre les packages et la structure de répertoires. Nous avons également vu comment créer et utiliser des packages.

Enfin, nous avons expliqué comment compiler et exécuter une application avec des packages à l'aide des commandesjavac etjava.

L'exemple de code complet est disponibleover on GitHub.