Question

Lorsqu'il est utilisé comme ceci:

import static com.showboy.Myclass;

public class Anotherclass{}

quelle est la différence entre importer statique com.showboy.Myclass et importer com.showboy.Myclass ?

Était-ce utile?

La solution

Voir Documentation

  

La déclaration d'importation statique est   analogue à l'importation normale   déclaration. Où l'importation normale   déclaration importe des classes de   paquets, leur permettant d'être utilisés   sans qualification de colis, le   déclaration d'importation statique   membres statiques des classes, permettant   qu'ils soient utilisés sans classe   qualification.

     

Alors, quand devriez-vous utiliser l'importation statique?   Très économiquement! Utilisez-le seulement quand vous le feriez   sinon être tenté de déclarer local   copies de constantes, ou d'abuser   l'héritage (l'interface constante   Antipattern). En d'autres termes, utilisez-le   lorsque vous avez besoin d'un accès fréquent à   membres statiques d'un ou deux   Des classes. Si vous abusez de l'électricité statique   fonction d'importation, il peut rendre votre   programme illisible et non maintenable,   polluer son espace de noms avec tous les   membres statiques que vous importez. Lecteurs de   votre code (vous y compris, quelques mois   après l'avoir écrit) ne saurez pas   quelle classe un membre statique vient   de. Importer tout le statique   les membres d'une classe peuvent être   particulièrement nuisible à la lisibilité;   si vous n'avez besoin que d'un ou deux membres,   les importer individuellement. Utilisé   de manière appropriée, l'importation statique peut faire   votre programme plus lisible, par   enlever le passe-partout de la répétition   des noms de classe.

Autres conseils

Il n'y a pas de différence entre les deux importations que vous indiquez. Vous pouvez toutefois utiliser l'importation statique pour autoriser un accès non qualifié à des membres statiques d'autres classes. Où je devais faire cela:

import org.apache.commons.lang.StringUtils;
      .
      .
      .
if (StringUtils.isBlank(aString)) {
      .
      .
      .

Je peux faire ceci:

import static org.apache.commons.lang.StringUtils.isBlank;
      .
      .
      .
if (isBlank(aString)) {
      .
      .
      .

Vous pouvez en voir plus dans la documentation .

L'importation statique est utilisée pour importer des champs / méthodes statiques d'une classe au lieu de:

package test;

import org.example.Foo;

class A {

 B b = Foo.B_INSTANCE;

}

Vous pouvez écrire:

package test;

import static org.example.Foo.B_INSTANCE;

class A {

 B b = B_INSTANCE;

}

Cela est utile si vous utilisez souvent une constante d'une autre classe dans votre code et si l'importation statique n'est pas ambiguë.

Btw, dans votre exemple "import statique org.example.Myclass;" ne fonctionnera pas: l'importation est pour la classe, l'importation statique est pour les membres statiques d'une classe.

L'idée de base de l'importation statique est que, chaque fois que vous utilisez une classe statique, une variable statique ou une énumération, vous pouvez les importer et vous épargner une saisie.

Je vais développer mon propos avec des exemples.

import java.lang.Math;

class WithoutStaticImports {

 public static void main(String [] args) {
  System.out.println("round " + Math.round(1032.897));
  System.out.println("min " + Math.min(60,102));
 }
}

Même code, avec importations statiques:

import static java.lang.System.out;
import static java.lang.Math.*;

class WithStaticImports {
  public static void main(String [] args) {
    out.println("round " + round(1032.897));
    out.println("min " + min(60,102));
  }
}

Remarque : une importation statique peut compliquer la lecture de votre code.

  

la différence entre "import statique com.showboy.Myclass" et "import com.showboy.Myclass"?

Le premier doit générer une erreur de compilation car l’importation statique ne fonctionne que pour l’importation de champs ou de types de membres. (en supposant que MyClass ne soit pas une classe interne ni un membre de showboy)

Je pense que vous vouliez dire

import static com.showboy.MyClass.*;

qui rend tous les champs statiques et les membres de MyClass disponibles dans l'unité de compilation réelle sans avoir à les qualifier ... comme expliqué ci-dessus

Le import permet au programmeur Java d'accéder aux classes d'un package sans qualification de package.

La fonctionnalité import statique permet d’accéder aux membres statiques d’une classe sans la qualification de classe.

Le import fournit l'accessibilité aux classes et à l'interface alors que l'importation statique fournit l'accessibilité aux membres statiques de la classe.

Exemple:

Avec importation

import java.lang.System.*;    
class StaticImportExample{  
    public static void main(String args[]){  

       System.out.println("Hello");
       System.out.println("Java");  

  }   
} 

Avec importation statique

import static java.lang.System.*;    
class StaticImportExample{  
  public static void main(String args[]){  

   out.println("Hello");//Now no need of System.out  
   out.println("Java");  

 }   
} 

Voir aussi: Qu’est-ce que l’importation statique dans Java 5

Supposons que vous avez des champs et des méthodes statiques dans une classe appelée MyClass dans un package appelé myPackage et que vous souhaitez y accéder directement en saisissant myStaticField ou myStaticMethod sans saisir à chaque fois MyClass.myStaticField ou MyClass.myStaticMethod .

Remarque: vous devez faire un     importer monPackage.MyClass ou monPackage. *     pour accéder aux autres ressources

Le modificateur static après import sert à récupérer / utiliser des champs statiques d'une classe. Un domaine dans lequel j'utilise import static est destiné à récupérer des constantes à partir d'une classe. Nous pouvons également appliquer import static sur des méthodes statiques. Veillez à saisir import statique car import statique est incorrect.

Qu'est-ce que importation statique en Java - JavaRevisited - Une très bonne ressource pour en savoir plus sur import statique .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top