Que signifie le modificateur «statique» après «importation»?

Lorsqu’il est utilisé comme ceci:

import static com.showboy.Myclass; public class Anotherclass{} 

Quelle est la différence entre import static com.showboy.Myclass et import com.showboy.Myclass ?

Voir la documentation

La déclaration d’importation statique est analogue à la déclaration d’importation normale. Lorsque la déclaration d’importation normale importe des classes à partir de packages, leur permettant d’être utilisées sans qualification de package, la déclaration d’importation statique importe les membres statiques des classes, leur permettant d’être utilisés sans qualification de classe.

Alors, quand devriez-vous utiliser l’importation statique? Très modérément! Utilisez-le uniquement si vous êtes tenté de déclarer des copies locales de constantes ou d’abuser de l’inheritance (l’interface Constant Antipattern). En d’autres termes, utilisez-le lorsque vous avez besoin d’un access fréquent à des membres statiques d’une ou deux classes. Si vous abusez de la fonctionnalité d’importation statique, cela peut rendre votre programme illisible et impossible à maintenir, en polluant son espace de noms avec tous les membres statiques que vous importez. Les lecteurs de votre code (y compris vous, quelques mois après l’avoir écrit) ne sauront pas de quelle classe provient un membre statique. L’importation de tous les membres statiques d’une classe peut être particulièrement nuisible à la lisibilité; Si vous n’avez besoin que d’un ou deux membres, importez-les individuellement. Utilisée de manière appropriée, l’importation statique peut rendre votre programme plus lisible, en supprimant la méthode de répétition des noms de classe.

Il n’y a pas de différence entre ces deux importations que vous déclarez. Vous pouvez cependant utiliser l’importation statique pour autoriser un access non qualifié aux membres statiques d’autres classes. Là où je devais faire ça:

 import org.apache.commons.lang.SsortingngUtils; . . . if (SsortingngUtils.isBlank(aSsortingng)) { . . . 

Je peux le faire:

 import static org.apache.commons.lang.SsortingngUtils.isBlank; . . . if (isBlank(aSsortingng)) { . . . 

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; } 

Tu peux écrire :

 package test; import static org.example.Foo.B_INSTANCE; class A { B b = B_INSTANCE; } 

C’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 static 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 de la saisie.

Je vais élaborer mon point avec exemple.

 import java.lang.Math; class WithoutStaticImports { public static void main(Ssortingng [] args) { System.out.println("round " + Math.round(1032.897)); System.out.println("min " + Math.min(60,102)); } } 

Même code, avec des importations statiques:

 import static java.lang.System.out; import static java.lang.Math.*; class WithStaticImports { public static void main(Ssortingng [] args) { out.println("round " + round(1032.897)); out.println("min " + min(60,102)); } } 

Remarque : l’importation statique peut rendre votre code confus à lire.

la différence entre “import static com.showboy.Myclass” et “import com.showboy.Myclass”?

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

Je pense que tu voulais dire

 import static com.showboy.MyClass.*; 

qui rend tous les champs statiques et les membres de MyClass disponibles dans l’unité de compilation proprement dite sans avoir à les qualifier … comme expliqué ci-dessus

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

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

L’ import fournit l’accessibilité aux classes et à l’interface, tandis que static import permet d’accéder aux membres statiques de la classe.

Exemple :

Avec import

 import java.lang.System.*; class StaticImportExample{ public static void main(Ssortingng args[]){ System.out.println("Hello"); System.out.println("Java"); } } 

Avec importation statique

 import static java.lang.System.*; class StaticImportExample{ public static void main(Ssortingng args[]){ out.println("Hello");//Now no need of System.out out.println("Java"); } } 

Voir aussi: Qu’est-ce qu’une importation statique dans Java 5?

Supposons que vous ayez 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 importer myPackage.MyClass ou myPackage. * 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 la récupération des constantes d’une classe. Nous pouvons également appliquer l’ import static sur les méthodes statiques. Veillez à taper import static car static import est incorrecte.

Qu’est-ce que static import en Java – JavaRevisited – Une très bonne ressource pour en savoir plus sur l’ import static .