当前位置: 首页 > news >正文

继承 HttpURLConnection 的自定义子类转换

首先申明 自己现在还没有搞懂,不过感觉与下面转载处有些相通的地方,可以借鉴下吧.....搞懂的告诉我哦...

自己想搞清楚出的

java Api 中(HttpURLConnection 是继承urlConnection的)

 

创建个类是  public  class AAA extends java.net.HttpURLConnection ....

java.net.URL url=new URL("http://XXXXXXXXX");

AAA a=(ReqeustUrl)url.openConnection();

 

居然报错  java.lang.ClassCastException: sun.net.www.protocol.http.HttpURLConnection cannot be cast to AAA

打印输出  System.out.println(url.openConnection().getClass().getName()); 结果为  sun.net.www.protocol.http.HttpURLConnection

怎么回事?

-------------------------------------转载处------------------------------------------

对于抽象类的一点疑问

1.在李刚著的《疯狂java讲义》第二版中,第6章抽象类的那一节,对于抽象类,有这样一句话:抽象类不能用来创建实例,只能当成父类来被继承。
2.java API7.0中,HttpURLConnection是个抽象类。
Class HttpURLConnection
 
java.lang.Object
 java.net.URLConnection
 java.net.HttpURLConnection
 


Direct Known Subclasses: HttpsURLConnection  
--------------------------------------------------------------------------------

public abstract class [color=#FF0000]HttpURLConnection[/color]
extends URLConnection
3. URL resource=new URL("http://www.crazyit.org/index.php");
URLConnection wResp=resource.openConnection();中wResp是HttpURLConnection
通过反射机制可以看到: System.out.println(wResp.getClass().getName());
输出结果如下:sun.net.www.protocol.http.HttpURLConnection
所以可以知道,在运行的过程中,wRsp是HttpURLConnection的实例。
4.疑问:根据上面三点,现象是:第一点上描述的内容和第三点实验内容不符。
这到底是怎么回事?是我的实验方法不对呢?还是对某方面知识的理解不到位?

------解决方案--------------------------------------------------------
不冲突

1.sun.net.www.protocol.http.HttpURLConnection 继承了 java.net.HttpURLConnection
2.url.openConnection()实际上返回的是一个sun.net.www.protocol.http.HttpURLConnection的实例
3.因为继承的关系,子类的引用可以被赋值给一个声明为其父类的一个变量.

关于第三点,java里任意一个类,都是继承自Object.你可以把其它类的引用赋值给Object变量。

 

比如 Object obj="字符串";

 

 

 

来自http://www.myexception.cn/j2se/396777.html

相关文章:

  • 绿色版手动配置tomcat
  • 解决eclipse 修改替换xml文件,卡死 慢
  • Eclipse更改默认字符集utf-8
  • Web app root system property already set to different value: 'webapp.root'
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • js判断是否存在父页面
  • Eclipse Removing obsolete files from server 问题
  • paoding-rose
  • 判断类中的某个属性 是否是某个类的派生子类
  • mysql 复制表结构语句
  • js java 转 html code
  • eclipse + tomcat 重复加载 多工程 host
  • 编码 转码
  • eclipse-helios中Errors running builder JavaScript Validator的问题
  • SSH_Secure_Shell_ClientH工具密钥登录linux
  • 《剑指offer》分解让复杂问题更简单
  • AngularJS指令开发(1)——参数详解
  • CSS实用技巧干货
  • leetcode46 Permutation 排列组合
  • Linux Process Manage
  • sessionStorage和localStorage
  • Spark学习笔记之相关记录
  • 从setTimeout-setInterval看JS线程
  • 分布式任务队列Celery
  • 给初学者:JavaScript 中数组操作注意点
  • 观察者模式实现非直接耦合
  • 机器学习中为什么要做归一化normalization
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 一道闭包题引发的思考
  • 一个JAVA程序员成长之路分享
  • 一个项目push到多个远程Git仓库
  • #if 1...#endif
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (十一)c52学习之旅-动态数码管
  • (学习日记)2024.02.29:UCOSIII第二节
  • (译)计算距离、方位和更多经纬度之间的点
  • .FileZilla的使用和主动模式被动模式介绍
  • .mysql secret在哪_MySQL如何使用索引
  • .Net 4.0并行库实用性演练
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core中的去虚
  • .Net 代码性能 - (1)
  • .NET 设计模式初探
  • .net6使用Sejil可视化日志
  • .net分布式压力测试工具(Beetle.DT)
  • .pop ----remove 删除
  • [Android]如何调试Native memory crash issue
  • [Android]使用Retrofit进行网络请求
  • [C#]科学计数法(scientific notation)显示为正常数字
  • [C/C++]数据结构 栈和队列()
  • [C++]STL之map
  • [cb]UIGrid+UIStretch的自适应
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE