2017-09-26 1 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; 
} 

} 

私はジェネリック<T>タイプでPatternをコンパイルしたいです。

+0

'java.util.regex.Pattern.compile'は' STRING'引数を取り、それはあなたがここでやろうとしているかは明らかではありません。 – Eran

+0

と 'String'も動作しません! –

+3

それはおそらく、あなたのクラス名もパターンであるからでしょう。名前を変更します。 – 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

実際、compileではregexパラメータがStringである必要があるためです。 – P3trur0

+0

パターンクラスは、java.util.regex.Patternにキャストできません。 –

関連する問題