2017-09-26 32 views
-3

我不明白爲什麼這個代碼不工作: 編輯(在模式字符串的正則表達式,無)如何編譯泛型類型爲<T>的模式?

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Pattern<T> { 

String regex; 

public Pattern(String regex) { 
    this.regex = regex; 
} 

public T getPattern(String text) { 
    Pattern p = Pattern.compile(regex); 
    // Matcher m = p.matcher(text); 
    return null; 
} 

} 

我想要編譯Pattern與通用<T>類型。

+0

'java.util.regex.Pattern.compile'需要'String'說法,所以目前還不清楚是什麼你想在這裏做。 – Eran

+0

與'String'它也不起作用! –

+3

那麼,這可能是由於你的類名也是Pattern。重命名它。 – Eran

回答

2

這是更好地重命名你的類。但是你也可以留下這個名字。
要做到這一點,你應該改變你的代碼:

public T getPattern(String text) { 
    java.util.regex.Pattern p = java.util.regex.Pattern.compile(regex); 
    // Matcher m = p.matcher(text); 
    return null; 
} 
0

重命名你的類,模式已經在你的導入import java.util.regex.Pattern;

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

    public class MyPattern<T> { 

     T regex; 

     public MyPattern(T regex) { 
      this.regex = regex; 
     } 

     public T getPattern(String text) { 
      Pattern p = Pattern.compile(regex); 
      // Matcher m = p.matcher(text); 
      return null; 
     } 

    } 
+0

loool:D謝謝,我是否失明? :D –

+3

'Pattern.compile()'當然不會返回'MyPattern '類型的值。 –

+0

爲什麼-1爲我的答案?這與驗證的答案是一樣的。 –

1

或者:

import java.util.regex.Matcher; 

public class Pattern<T> { 

String regex; 

public Pattern(String regex) { 
    this.regex = regex; 
} 

public T getPattern(String text) { 
    java.util.regex.Pattern p = java.util.regex.Pattern.compile(regex); 
    // Matcher m = p.matcher(text); 
    return null; 
} 
} 
+1

哪裏將是編譯錯誤。 –

+0

的確,由於編譯要求regex參數是一個String。 – P3trur0

+0

而模式類不能轉換爲java.util.regex.Pattern。 –