web-dev-qa-db-ja.com

タイプListはジェネリックではありません。引数でパラメーター化することはできません[HTTPClient]

import Java.awt.List;
import Java.awt.image.BufferedImage;
import Java.io.BufferedReader;
import Java.io.ByteArrayOutputStream;
import Java.io.File;
import Java.io.InputStreamReader;
import Java.util.ArrayList;

import javax.imageio.ImageIO;

import org.Apache.commons.codec.binary.Base64;
import org.Apache.http.HttpResponse;
import org.Apache.http.client.HttpClient;
import org.Apache.http.client.entity.UrlEncodedFormEntity;
import org.Apache.http.client.methods.HttpPost;
import org.Apache.http.impl.client.DefaultHttpClient;
import org.Apache.http.message.BasicNameValuePair;
import org.omg.DynamicAny.NameValuePair;

public class Upload {

    public static void main (String[] args) {

        System.out.println(Imgur("C:\\Users\\username\\Desktop\\image.jpg",     "clientID"));
    }

public static String Imgur (String imageDir, String clientID) {
    //create needed strings
    String address = "https://api.imgur.com/3/image";

    //Create HTTPClient and post
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(address);

    //create base64 image
    BufferedImage image = null;
    File file = new File(imageDir);

    try {
        //read image
        image = ImageIO.read(file);
        ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
        ImageIO.write(image, "png", byteArray);
        byte[] byteImage = byteArray.toByteArray();
        String dataImage = new Base64().encodeAsString(byteImage);

        //add header
        post.addHeader("Authorization", "Client-ID" + clientID);
        //add image
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("image", dataImage));
        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        //execute
        HttpResponse response = client.execute(post);

        //read response
        BufferedReader rd = new BufferedReader(new         InputStreamReader(response.getEntity().getContent()));
        String all = null;

        //loop through response
        while (rd.readLine() != null) {
            all = all + " : " + rd.readLine(); 
        }

        return all;

    }
    catch (Exception e){
        return "error: " + e.toString();
    }
}
}

だから私はそのコードを持っていて、それを Java httpsエラーを使用してImgur v3にアップロード から取得し、「リスト」の50行目にエラーが表示される

タイプListはジェネリックではありません。引数でパラメーター化することはできません

これを解決するにはどうすればよいですか?

http://hc.Apache.org/httpclient-3.x/ を使用しており、v3 APIを使用して画像をimgurにアップロードしたい。

編集:インポートを変更した後、これらのエラーが表示されます。

これで解決しますが、さらに2つのエラーが発生します。

nameValuePairs.add(new BasicNameValuePair("image", dataImage));

タイプListのメソッドadd(NameValuePair)は、引数(BasicNameValuePair)には適用されません

そして

post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

コンストラクターUrlEncodedFormEntity(List)は未定義です

54
user2526311

インポートには微妙なエラーがあります:

import Java.awt.List;

そのはず:

import Java.util.List;

問題は、awtとJavaのutilパッケージの両方がListというクラスを提供することです。前者は表示要素であり、後者はコレクションで使用される汎用タイプです。さらに、Java.util.ArrayListJava.util.Listを拡張し、notJava.awt.Listであるため、ジェネリック用でない場合は、まだ問題があります。

編集:(OPからのさらなる質問に対処するため)コメントへの回答として、anther微妙なインポートの問題があるようです。

import org.omg.DynamicAny.NameValuePair;

あるべき

import org.Apache.http.NameValuePair

nameValuePairsが正しいジェネリック型パラメーターを使用するようになりました。yourNameValuePairはnew UrlEncodedFormEntityのジェネリック引数であるList<? extends NameValuePair>が有効になります。現在はtheirNameValuePairと同じです。以前は、org.omg.DynamicAny.NameValuePairorg.Apache.http.NameValuePairを拡張しておらず、短縮された型名NameValuePairはファイル内でorg.omg...と評価されましたが、コードではorg.Apache...でした。

175
Andrey Akhmetov

インポートしてみてください

Java.util.List;

の代わりに

Java.awt.List;
15
Juned Ahsan

使用しようとしているListインターフェースはJava.util.listパッケージの一部であるため、Java.util.listを追加すると問題が解決します。

1
Sumit Sood

私は同じエラーを受け取りましたが、以下のようにしたとき、問題は解決しました。
このように書く代わりに:

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);

以下を使用してください:

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
0
Kotes