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();
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();
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.
Vous pouvez ajouter des annotations aux paquets et ils peuvent fournir une version de paquet (voir ma réponse) –
Les paquets ne peuvent être ni des objets ni des classes eux-mêmes. Seules les classes ont des méthodes.
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.
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
Excellente réponse, c'est aussi la direction que je prendrais. – aymeric
belle solution +1 – brimborium
Non, car les packages ne sont ni des classes ni des objets. – oldrinb
peut-être en Java 9 –