2012-09-20 26 views
27

Qual è la procedura migliore per dichiarare un file java che ha solo costante?Esempi di costanti Java (Creare un file java con solo costanti)

public interface DeclareConstants 
{ 
    String constant = "Test"; 
} 

O

public abstract class DeclareConstants 
{ 
    public static final String constant = "Test"; 
} 
+6

variabile costante, non è un ossimoro? –

+1

@PeterWalser Quindi è una variabile * static *. : D tecnicamente statico significa qualcosa di diverso da non mutevole ma ancora ... –

risposta

54

Nessuno. Utilizzare final class for Constants dichiararli come public static final e importare staticamente tutte le costanti ovunque sia necessario.

public final class Constants { 

    private Constants() { 
      // restrict instantiation 
    } 

    public static final double PI = 3.14159; 
    public static final double PLANCK_CONSTANT = 6.62606896e-34; 
} 

Usage:

import static Constants.PLANCK_CONSTANT; 
import static Constants.PI;//import static Constants.*; 

public class Calculations { 

     public double getReducedPlanckConstant() { 
       return PLANCK_CONSTANT/(2 * PI); 
     } 
} 

vedi link wiki: http://en.wikipedia.org/wiki/Constant_interface

+1

+1. L'utilizzo di un'interfaccia è in realtà un anti-pattern. –

+0

@Gilberto: il collegamento Wiki descrive molto bene :) –

+0

Diventa un antipattern solo quando si implementa l'interfaccia. Se sei meticoloso nell'implementare questo utilizzo, non dimenticare il costruttore finale privato per la classe. – millimoose

2

- Creare un Class con public static finalcampi.

- E quindi è possibile accedere a questi campi da qualsiasi classe utilizzando Class_Name.Field_Name.

- è possibile dichiarare la class come final, in modo che il classnon può essere estesa (Ereditato) e modificare ....

+1

Siete i benvenuti ... –

1

Entrambi sono validi, ma io di solito scelgono interfacce. Una classe (astratta o non) non è necessaria se non ci sono implementazioni.

Come suggerimento, prova a scegliere saggiamente la posizione delle costanti, fanno parte del contratto esterno. Non inserire ogni singola costante in un file.

Ad esempio, se un gruppo di costanti viene utilizzato solo in una classe o in un metodo, inserirli in tale classe, la classe estesa o le interfacce implementate. Se non ti prendi cura, potresti finire con un gran casino di dipendenze.

A volte un'enumerazione è una buona alternativa per le costanti (Java 5), ​​prendere a guardare: http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html

+1

Prego. Mi piace molto la soluzione di classe finale !! (Prova fittizia) –

0

Questa domanda è vecchia. Ma vorrei menzionare un altro approccio. Utilizzo di Enum per la dichiarazione di valori costanti. Sulla base della risposta di Nandkumar Tekale, l'Enum possono essere utilizzati come di seguito:

Enum: classe

public enum Planck { 
    REDUCED(); 
    public static final double PLANCK_CONSTANT = 6.62606896e-34; 
    public static final double PI = 3.14159; 
    public final double REDUCED_PLANCK_CONSTANT; 

    Planck() { 
     this.REDUCED_PLANCK_CONSTANT = PLANCK_CONSTANT/(2 * PI); 
    } 

    public double getValue() { 
     return REDUCED_PLANCK_CONSTANT; 
    } 
} 

Cliente:

public class PlanckClient { 

    public static void main(String[] args) { 
     System.out.println(getReducedPlanckConstant()); 
     // or using Enum itself as below: 
     System.out.println(Planck.REDUCED.getValue()); 
    } 

    public static double getReducedPlanckConstant() { 
     return Planck.PLANCK_CONSTANT/(2 * Planck.PI); 
    } 

} 

Riferimento: Il l'uso di Enum per dichiarare campi costanti è suggerito da Joshua Bloch nel suo Effective Libro di Java.