`
zjh1n795
  • 浏览: 9370 次
文章分类
社区版块
存档分类
最新评论

继承 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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics