Quelle est la meilleure pratique pour déclarer un fichier Java n'ayant qu'une constante?
public interface DeclareConstants
{
String constant = "Test";
}
OR
public abstract class DeclareConstants
{
public static final String constant = "Test";
}
Aucun. Utilisation final class for Constants
les déclarer comme public static final
et statique importent toutes les constantes si nécessaire.
public final class Constants {
private Constants() {
// restrict instantiation
}
public static final double PI = 3.14159;
public static final double PLANCK_CONSTANT = 6.62606896e-34;
}
Utilisation:
import static Constants.PLANCK_CONSTANT;
import static Constants.PI;//import static Constants.*;
public class Calculations {
public double getReducedPlanckConstant() {
return PLANCK_CONSTANT / (2 * PI);
}
}
Voir le lien wiki: http://en.wikipedia.org/wiki/Constant_interface
- Créez un Class
avec public static final
champs.
- Et puis vous pouvez accéder à ces champs à partir de n'importe quelle classe en utilisant le Class_Name.Field_Name
.
- Vous pouvez déclarer le class
comme final
, de sorte que le class
ne peut pas être étendu (hérité) et modifié. ...
Les deux sont valides mais je choisis normalement des interfaces. Une classe (abstraite ou non) n'est pas nécessaire s'il n'y a pas d'implémentations.
A titre indicatif, essayez de choisir judicieusement l'emplacement de vos constantes, elles font partie de votre contrat externe. Ne mettez pas toutes les constantes dans un seul fichier.
Par exemple, si un groupe de constantes n'est utilisé que dans une classe ou une méthode, placez-les dans cette classe, la classe étendue ou les interfaces implémentées. Si vous ne faites pas attention, vous pourriez vous retrouver avec un gros gâchis de dépendance.
Parfois, une énumération est une bonne alternative aux constantes (Java 5), regardez: http://docs.Oracle.com/javase/1.5.0/docs/guide/language/enums.html
Vous pouvez également utiliser la classe Properties
Voici le fichier de constantes appelé
# this will hold all of the constants
frameWidth = 1600
frameHeight = 900
Voici le code qui utilise les constantes
public class SimpleGuiAnimation {
int frameWidth;
int frameHeight;
public SimpleGuiAnimation() {
Properties properties = new Properties();
try {
File file = new File("src/main/resources/dataDirectory/gui_constants.properties");
FileInputStream fileInputStream = new FileInputStream(file);
properties.load(fileInputStream);
}
catch (FileNotFoundException fileNotFoundException) {
System.out.println("Could not find the properties file" + fileNotFoundException);
}
catch (Exception exception) {
System.out.println("Could not load properties file" + exception.toString());
}
this.frameWidth = Integer.parseInt(properties.getProperty("frameWidth"));
this.frameHeight = Integer.parseInt(properties.getProperty("frameHeight"));
}