2014-04-01 20 views
1

或者它甚至有可能嗎?我正在寫一個REST client。 java中的URLConnection類擴展了HttpURLConnectionHttpsURLConnection。 我想要的是聲明(HttpURLConnection or HttpsURLConnection)類型,並根據布爾值將此URLConnection對象投射到該聲明的類型。 F.e:如何使用通常的括號動態地在java中進行轉換?

Class<? extends URLConnection> theClass = _SSL ? 
    HttpsURLConnection.class : HttpURLConnection.class; 

然後

((theClass) HttpConnection).setRequestMethod("POST"); 

或類似的東西。

在此先感謝!

+0

你想要一個'Class'對象或一個對象來執行HTTP操作嗎? – Raedwald

+1

您顯示的示例演示沒有很好的理由來動態投射。 'HttpsURLConnection'是'HttpURLConnection'的子類,你正在調用基類的方法。 –

+0

我可能會使用不好的短語,對不起。我不想要Class對象,我只想通過變量來轉換該對象。 – szidijani

回答

2

我想,你只需要投到java.net.HttpURLConnection,因爲你的HttpsURLConnectionHttpURLConnection都擴展了這個抽象類。

+0

謝謝,那個訣竅:) – szidijani

0

你可以做這樣的事情。

if(_SSL) { 
    ((HttpsURLConnection) HttpConnection).setRequestMethod("POST"); 
} else { 
    ((HttpURLConnection) HttpConnection).setRequestMethod("POST"); 
} 

由於szidijani評論,也沒有必要Class對象。

+0

是的,我確實做到了,謝謝! – szidijani