2015-12-12 60 views
0

我試圖訪問一個靜態變量,我得到一個NullPointerException僅適用於少數用戶中我發現分析:靜態變量的NullPointerException

public class Regex { 
    public static final String 
    MY_REGEX="\\S+(\\s+\\S+){7}\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+.*"; 
    public static Pattern MY_PTRN = Pattern.compile(MY_REGEX); 
} 

//

public class SomeClass{ 
    If(somestring!=null){ 
     Matcher matcher = Regex.MY_PTRN.matcher(somestring); 
     // Nullpointerexception 
    } 
} 

我不是Java專家。我應該以不同的方式訪問靜態變量嗎?

+0

請與您的進口...正則表達式,匹配器...在你的代碼 – koutuk

+0

java.util.regex.Matcher中 – koutuk

+0

沒有問題,如果調試正常,你會確切知道事情發生錯誤的地方! –

回答

0

我不是Java專家。訪問一個靜態變量的一般方法如下:

public class Regex { 
    static final String MY_REGEX; 
    MY_REGEX="\\S+(\\s+\\S+){7}\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+.*"; 
    } 

public class SomeClass{ 
    somestring=Regex.MY_REGEX 
    If(somestring!=null){ 
     //do something witht the string. 
} 
} 
+0

所以這意味着每次編譯模式?我希望Pattern在訪問時被編譯一次,之後每次使用時都可用。 –

+0

更新了代碼檢查。 – HourGlass

+0

Pattern的matcher()方法返回匹配器的新實例 –