0

こんにちは皆さん、私はこのコードに問題があります:

//Class FileManip
public class FileManip{

private HTTPRequest<List<String>> addMe = new HTTPRequest<List<String>>();

    public void openFile(){

            try{
                BufferedReader buff = new BufferedReader(new FileReader("Saturday.txt"));
                try{
                    Double ctr = 0.0;
                    String readHTTPURIFromTxt = buff.readLine();
                    while (readHTTPURIFromTxt!=null){

                        if (!readHTTPURIFromTxt.isEmpty()){
                            addMe.putListHTTPCharTable(parseHTTPReqToCharbyChar(readHTTPURIFromTxt), ctr);
                            ctr++;
                        }
                    readHTTPURIFromTxt = buff.readLine();
                    }
                }

                finally{
                    buff.close();
                }   

            }
            catch(FileNotFoundException e){
                System.out.println("File not found"+e);
            }
            catch(IOException e){
                System.out.println("oist exception");
            }
        }

    public List<String> parseHTTPReqToCharbyChar(String getHTTP){ 
            List<String> parsingReq = new ArrayList<String>();
            String convChar=null;

                for (int x = 0; x<getHTTP.length(); x++){
                    convChar = Character.toString(getHTTP.charAt(x));
                    parsingReq.add(convChar);
                }

            return parsingReq;
        }
}


    //Class HTTPRequest
    public class HTTPRequest<T> {

    private LinkedHashMap<List<T>, Double> tableOfInitProbList = new LinkedHashMap<List<T>, Double>();

    public HTTPRequest(){
        }

    public HTTPRequest(List<T> entry, Double value){
            tableOfInitProbList.put(entry, value);
        }

    public void putListHTTPCharTable(List<T> uri, Double value){
            tableOfInitProbList.put(uri, value);
        }

    }

問題はライン

addMe.putListHTTPCharTable(parseHTTPReqToCharbyChar(readHTTPURIFromTxt), ctr);

ifステートメント内のクラスfilemanip openfileメソッドにあります。2 つのパラメーター List < T > と Double を取るように putListHttpCharTable を作成しましたが、戻り値の型が List である引数 parseHTTPReqToCharbyChar(readHTTPURIFromTxt) を渡すと、コンパイル時エラーが発生します。それは読む

タイプ HTTPRequest> のメソッド putListHTTPCharTable(List>, Double) は、引数 (List, Double) には適用されません。

List < String > 戻り値の型を持つメソッドを渡しましたが、どういうわけか、コンパイラはそれを List < List < T > > または List < List < String > > として読み取ろうとしており、単に List < String > ではありません。とにかくこれを修正する方法はありますか?

4

2 に答える 2

3

なぜなら :

HTTPRequest<List<String>>

意味 :

T <=> List<String> 

したがって、コンパイラはこれを認識します(「addMe」変数の場合):

//Class HTTPRequest
    public class HTTPRequest<List<String>> {

    private LinkedHashMap<List<List<String>>, Double> tableOfInitProbList = new LinkedHashMap<List<List<String>>, Double>();

    public HTTPRequest(){
        }

    public HTTPRequest(List<List<String>> entry, Double value){
            tableOfInitProbList.put(entry, value);
        }

    public void putListHTTPCharTable(List<List<String>> uri, Double value){
            tableOfInitProbList.put(uri, value);
        }

    }
于 2012-10-03T13:57:52.763 に答える
2

に設定TしていますList<String>

次に、メソッドはを探しているList<T>ので、最終的にはList<List<String>>

クラスを次のように変更すると、これは機能するはずです。

public class HTTPRequest<T> {

    private LinkedHashMap<T, Double> tableOfInitProbList = new LinkedHashMap<List<T>, Double>();

    public HTTPRequest(){
        }

    public HTTPRequest(T entry, Double value){
            tableOfInitProbList.put(entry, value);
        }

    public void putListHTTPCharTable(T uri, Double value){
            tableOfInitProbList.put(uri, value);
        }

}

あるいは、ジェネリック パラメータでリストのタイプを指定するだけの場合は、次の宣言が機能するはずです。

private HTTPRequest<String> addMe = new HTTPRequest<String>();

于 2012-10-03T14:00:31.170 に答える