2010-06-19 40 views
10

Hiện tại, tôi muốn biết tệp thuộc tính nào đang được tải trong ứng dụng của tôi.Cách đúng để thực hiện So sánh miền địa phương

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package example0; 

import java.util.Locale; 

/** 
* 
* @author yccheok 
*/ 
public class Main { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     //Locale.setDefault(Locale.SIMPLIFIED_CHINESE);  // Bundle_zh_CH.properties will be loaded. 
     //Locale.setDefault(Locale.CHINA);     // Bundle_zh_CH.properties will be loaded. 
     //Locale.setDefault(Locale.TRADITIONAL_CHINESE); // Bundle.properties will be loaded. 
     //Locale.setDefault(Locale.CHINESE);    // Bundle.properties will be loaded. 

     String Hello = java.util.ResourceBundle.getBundle("example0/Bundle").getString("HELLO"); 
     System.out.println(Hello); 

     System.out.println("Locale.SIMPLIFIED_CHINESE's language : " + Locale.SIMPLIFIED_CHINESE.getLanguage()); 
     System.out.println("Locale.CHINA's language : " + Locale.CHINA.getLanguage()); 
     System.out.println("Locale.TRADITIONAL_CHINESE's language : " + Locale.TRADITIONAL_CHINESE.getLanguage()); 
     System.out.println("Locale.CHINESE's language : " + Locale.CHINESE.getLanguage()); 

     System.out.println("Locale.SIMPLIFIED_CHINESE's country : " + Locale.SIMPLIFIED_CHINESE.getCountry()); 
     System.out.println("Locale.CHINA's country : " + Locale.CHINA.getCountry()); 
     System.out.println("Locale.TRADITIONAL_CHINESE's country : " + Locale.TRADITIONAL_CHINESE.getCountry()); 
     System.out.println("Locale.CHINESE's country : " + Locale.CHINESE.getCountry()); 
    } 

} 

Sau đây là kết quả:

Hello 
Locale.SIMPLIFIED_CHINESE's language : zh 
Locale.CHINA's language : zh 
Locale.TRADITIONAL_CHINESE's language : zh 
Locale.CHINESE's language : zh 
Locale.SIMPLIFIED_CHINESE's country : CN 
Locale.CHINA's country : CN 
Locale.TRADITIONAL_CHINESE's country : TW 
Locale.CHINESE's country : 

Trước đây, để xác định xem tập tin thuộc tính Bundle_zh_CH.properties sẽ được nạp, tôi đang thực hiện so sánh sau đây.

if (Locale.getDefault() == Locale.SIMPLIFIED_CHINESE) 

Tuy nhiên, một số miền địa phương khác ngoài SIMPLIFIED_CHINESE cũng sẽ tải Bundle_zh_CH.properties.

Cách đáng tin cậy để tôi làm như vậy là gì?

Shall I

if (Locale.getDefault() == Locale.SIMPLIFIED_CHINESE || Locale.getDefault() == Locale.China) 

hoặc

if (Locale.getDefault().equals("CN")) 

Trả lời

21

Đừng dựa vào bằng so sánh điều hành như bạn có thể tạo ra các trường hợp Locale mới với nhà thầu nào của nó. Trong đoạn mã sau:

Locale simpChinese = new Locale("zh","CN",""); 
System.out.println(simpChinese == Locale.SIMPLIFIED_CHINESE); 
System.out.println(simpChinese.equals(Locale.SIMPLIFIED_CHINESE)); 

in:

false 
true 
+2

Luôn kiểm tra sự bình đẳng giữa các đối tượng với 'Equals (Object)' – Radu

Các vấn đề liên quan