2016-04-20 7 views
0

Case1Welches ist bevorzugt? statisches Klassenfeld und das statische Feld einer anderen Klasse?

 public class One{ 
      private static Map<String, String> map; 
      static{ 
       map = new HashMap<String,String>(); 
       map.put("1","One"); 
      } 

      public void print(){ 
       System.out.println(map.get("1")); 
      } 
     } 

Case2:

 public class Constants{ 
     private static Map<String, String> map; 
      static{ 
       map = new HashMap<String,String>(); 
       map.put("1","One"); 
      } 
    } 

    public class Parser{ 
     public void print(){ 
       System.out.println(Constants.map.get("1")); 
      } 
    } 

Ich habe gerade versucht, mein Problem zu imitieren. Map wird konstante Werte haben. Bedeutet statisch nicht von der Laufzeit.

Welcher Ansatz ist hier am besten?

+3

hängt vom Design ab. Sind Sie offen für die Freigabe von Karten mit anderen Klassen? –

+0

übrigens, Karte in Ihrem zweiten Fall sollte öffentlich sein. –

+0

Was versuchen Sie mit diesem Design zu erreichen? Die exponierte Map wird veränderbar sein, was ich nicht so finde, wie du willst, oder? – Valentin

Antwort

1

Erstellen Sie eine öffentliche Klasse mit einer statischen endgültigen Karte darin.

public class Constants{ 
    public static final Map<String, String> map; 
    static{ 
     map = new HashMap<String,String>(); 
     map.put("1","One"); 
    } 
} 
Verwandte Themen