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

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相关推荐

  1. java jsch api_详解Java使用Jsch与sftp服务器实现

    在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件.本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接. 一.什么是SFTP ...

  2. java时间api_什么是java时间API?

    展开全部 在我们开发中,对于任62616964757a686964616fe78988e69d8331333433643732何操作,信息中时间是非常重要的一点,我们可以根据时间判断发生的时间,时间可 ...

  3. java excel api_全面挖掘Java Excel API 使用方法

    使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事.在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来 ...

  4. java教程java自学_15必须阅读Java 8教程

    java教程java自学 Java 8于上个月发布,并且充满了新功能和幕后优化. 互联网在覆盖所有这些新增功能(包括好与坏)方面都做得相当不错 . 我认为最好汇总一下我们认为是其中最好的一些教程,以帮 ...

  5. java dom4j api_详解Java解析XML的四种方法(推荐使用DOM4J,因为for Java)

    前言 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有 ...

  6. JAVA零学习之基础归纳(十八)--网络编程、协议、IP、基本API、URL、socket等

    [Java程序可以非常方便的访问互联网上的 HTTP服务.FTP服务等,并可以直接取得互联网上的远程资源,还可以向远程资源发送 GET.POST请求] 一.网络编程 1.1 网络概念和分类 所谓计算机 ...

  7. java 解析gson_使用Java和Google GSON解析ESPN API

    java 解析gson 在我的第一篇文章中,我将解释如何解析ESPN API. 可以在http://developer.espn.com/docs上找到API文档. 首先,您需要请求一个API密钥,然 ...

  8. 使用Java和Google GSON解析ESPN API

    在我的第一篇文章中,我将解释如何解析ESPN API. 可以在http://developer.espn.com/docs上找到API文档. 首先,您需要请求一个API密钥,然后可以开始查询REST ...

  9. Java程序员推荐阅读书籍

    作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...

最新文章

  1. 平衡二叉树-splay c/c++代码实现
  2. java 程序运行过程 简介
  3. 谁动了我的内存之PHP内存溢出
  4. 如何成为一名优秀的web前端工程师[转]
  5. STM32 进阶教程 1 - micropython 移植
  6. 31天重构学习笔记3. 提升方法
  7. 小余学调度:学习记录2021.8月
  8. 流量复制_详解Linux系统流量复制--gor、tcpcopy、nginx模块流量复制等
  9. Android textview 获取url,获取电话号码
  10. 微博粉丝平台开发全攻略
  11. 体验式培训之“盲人与哑巴”
  12. 在线全网音乐搜索下载源码
  13. 百度离线地图瓦片下载器
  14. 记住看小电影前一定要检查网址是不是 HTTPS 的,不然…
  15. win7安装程序无法配置计算机,windows安装程序无法将windows配置在此计算机的硬件上运行的解决方法...
  16. 78M05-ASEMI三端正线性稳压器78M05
  17. JavaScript 八卦
  18. 校招——2021多益网络软件开发笔试和面试
  19. html给用户自定义页面,个人门户增加自定义html模块(重要!)
  20. JAVA每日学习 Day31---抽象类和接口的含义、共性、区别

热门文章

  1. ospf多区域配置为什么ping不通_「实战」动态路由多区域 OSPF 基本配置,一分钟了解下...
  2. gmail头像_Gmail与Google+进一步整合:可显示好友头像
  3. 笔记本网络计算机和设备不可见,WIN10局域网电脑和设备显示不完整
  4. latex换页_备忘 | Latex 双栏模式下表格太长怎么办?
  5. vsphere ha 虚拟机监控错误_学会这3招,分分钟迁移业务繁忙虚拟机!
  6. java并发实战编程pdf_「原创」Java并发编程系列25 | 交换器Exchanger
  7. python爬取学籍_python 爬取现充Shell的成绩单
  8. python文本菜单程序_python3.x Day1 菜单程序练习
  9. electron调试html,electron桌面应用程序开发入门
  10. mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环