2012-08-15 4 views
4

Est-il possible d'écrire une méthode disponible au niveau du package? Supposons foo est un paquet:Méthode au niveau du package

long version = foo.getPackageVersion(); 
+1

Non, car les packages ne sont ni des classes ni des objets. – oldrinb

+3

peut-être en Java 9 –

Répondre

6

Non, ce n'est pas. Les méthodes ne peuvent être définies que sur les classes. Nulle part ailleurs.

Un package n'est pas physique, il ne peut pas servir de conteneur pour le code octet. Les packages ne sont rien d'autre que des espaces de noms pour les classes, les énumérations et les interfaces.

+1

Vous pouvez ajouter des annotations aux paquets et ils peuvent fournir une version de paquet (voir ma réponse) –

0

Les paquets ne peuvent être ni des objets ni des classes eux-mêmes. Seules les classes ont des méthodes.

0

En Java, les méthodes/opérations doivent être en classe. Le compilateur se plaint si vous essayez d'ajouter une méthode en dehors de la classe.

6

Vous pouvez théoriquement le faire dans scala, mais il crée une classe pour stocker ces méthodes et objets au niveau du package.

Vous pouvez créer des javadocs au niveau du package et y ajouter des annotations, mais pas des champs, des constructeurs ou des méthodes.

dans un fichier appelé package-info.java dans le package mypackage

/** 
* Javadoc comments for package {@code mypackage}. 
*/ 
@PackageVersion(getPackageVersion = "1.2.3") 
package mypackage; 

@Retention(RetentionPolicy.RUNTIME) 
public @interface PackageVersion { 
    String getPackageVersion(); 
} 

Package mypackage = Package.getPackage("mypackage"); 
PackageVersion version = mypackage.getAnnotation(PackageVersion.class); 
System.out.println("Package version: "+version.getPackageVersion()); 

impressions

Package version: 1.2.3 

Cette fonctionnalité a été ajoutée dans JSR-175

+0

Excellente réponse, c'est aussi la direction que je prendrais. – aymeric

+0

belle solution +1 – brimborium

Questions connexes