0

関数へのポインターとして変数を渡すにはどうすればよいですか? リファクタリングしたい次のコードがあります

    public static HttpResponse getJSONEntityFromURL(Context context, String url) throws ClientProtocolException, IOException {
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(url);
        httpget.addHeader("Accept", "application/json");
        httpget.addHeader("Content-Type", "application/json; charset=UTF-8");
        HttpResponse response;

        response = httpclient.execute(httpget);
        return response;
    }

このようなものに

    public static HttpResponse getJSONEntityFromURL(Context context, String url) throws ClientProtocolException, IOException {
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(url);
            setHeaders(httpget);
        HttpResponse response;

        response = httpclient.execute(httpget);
        return response;
    }

private static void setHeaders(HttpRequestBase httpget) {
    httpget.addHeader("Accept", "application/json");
    httpget.addHeader("Content-Type", "application/json; charset=UTF-8");
}

httpget パラメータをポインタとして渡す必要があると思いますか?

4

4 に答える 4

3

httpgetパラメーターをポインターとして渡す必要があると思いますか?

いいえ、Javaにはポインタがないためです。

HttpGetそこにあるコードは問題ないようです。オブジェクトを渡し、setHeaders()メソッドを呼び出しています。現在の構文に特定の問題がある場合は、説明してください。

于 2013-02-20T16:44:26.803 に答える
1

私はそれを使います

private static void setHeaders(final HttpRequestBase httpget) {
  httpget.addHeader("Accept", "application/json");
  httpget.addHeader("Content-Type", "application/json; charset=UTF-8");
}

ポインタではないことを確認してください。ただし、この場合、参照httpgetはHttpRequestBaseを返さずに変更されます。

于 2013-02-20T16:44:48.117 に答える
1

Java はポインター演算を実装していないため、Java では参照のみを渡すことができます。

すべてのプリミティブ型はコピーによって渡され、すべてのオブジェクト型は参照によって渡されます。(コピーによる。ただし、オブジェクト全体を複製するのではなく、メモリ アドレスのコピー。)

あなたがした方法は正しいと思います:

private static void setHeaders(HttpRequestBase AGet) {
    AGet.addHeader("Accept", "application/json");
    AGet.addHeader("Content-Type", "application/json; charset=UTF-8");
}

このメソッドを別の場所で使用する必要がない限り、最初のコードをお勧めします。

http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html <- ドキュメント

于 2013-02-20T16:47:49.397 に答える
1

以下に示すように、HttpMessage インターフェイスを使用できます。

http://developer.android.com/reference/org/apache/http/HttpMessage.html

これにより、このインターフェースの実装、つまり HttpGet のインスタンスを受け入れることができます。

すなわち: -

private static void setHeaders(HttpMessage httpMessage) 
{
    httpMessage.addHeader("Accept", "application/json");
    httpMessage.addHeader("Content-Type", "application/json; charset=UTF-8");
}
于 2013-02-20T16:54:35.260 に答える