日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java url api_深入阅读java api之URL

發布時間:2025/3/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java url api_深入阅读java api之URL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聲明: 不是很有空,慢慢完善

1. 若創建的類的實例需要較大的靈活性,則通過反射來進行創建

2. 創建的類需要用指定的類載入器載入進來

3. new URL().openConnection() 若url為http類型的,則實際上就是新建一個HttpURLConnection對象

4. URLConnection對象的getInputStream()方法就是得到HttpURLConnection對象的InputStream成員

5. IO流的打開和關閉對性能影響不大,但是不應同時擁有過多IO流對象

/**

* method in class java.net.URL

*/

static URLStreamHandler getURLStreamHandler(String protocol) {

URLStreamHandler handler = (URLStreamHandler)handlers.get(protocol);

if (handler == null) {

boolean checkedWithFactory = false;

// Use the factory (if any)

if (factory != null) {

handler = factory.createURLStreamHandler(protocol);

checkedWithFactory = true;

}

// Try java protocol handler

if (handler == null) {

String packagePrefixList = null;

packagePrefixList

= java.security.AccessController.doPrivileged(

new sun.security.action.GetPropertyAction(

protocolPathProp,""));

if (packagePrefixList != "") {

packagePrefixList += "|";

}

// REMIND: decide whether to allow the "null" class prefix

// or not.

packagePrefixList += JDK_PACKAGE_PREFIX;

StringTokenizer packagePrefixIter =

new StringTokenizer(packagePrefixList, "|");

while (handler == null &&

packagePrefixIter.hasMoreTokens()) {

String packagePrefix =

packagePrefixIter.nextToken().trim();

// do not try to instantiate the JDK gopher handler

// unless the system property had been explicitly set

if (protocol.equalsIgnoreCase(GOPHER) &&

packagePrefix.equals(JDK_PACKAGE_PREFIX) &&

!enableGopher) {

continue;

}

try {

String clsName = packagePrefix + "." + protocol +

".Handler";

Class cls = null;

try {

cls = Class.forName(clsName);

} catch (ClassNotFoundException e) {

ClassLoader cl = ClassLoader.getSystemClassLoader();

if (cl != null) {

cls = cl.loadClass(clsName);

}

}

if (cls != null) {

handler =

(URLStreamHandler)cls.newInstance();

}

} catch (Exception e) {

// any number of exceptions can get thrown here

}

}

}

synchronized (streamHandlerLock) {

URLStreamHandler handler2 = null;

// Check again with hashtable just in case another

// thread created a handler since we last checked

handler2 = (URLStreamHandler)handlers.get(protocol);

if (handler2 != null) {

return handler2;

}

// Check with factory if another thread set a

// factory since our last check

if (!checkedWithFactory && factory != null) {

handler2 = factory.createURLStreamHandler(protocol);

}

if (handler2 != null) {

// The handler from the factory must be given more

// importance. Discard the default handler that

// this thread created.

handler = handler2;

}

// Insert this handler into the hashtable

if (handler != null) {

handlers.put(protocol, handler);

}

}

}

return handler;

}

總結

以上是生活随笔為你收集整理的java url api_深入阅读java api之URL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。