A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔自成 中级黑马   /  2013-5-3 14:03  /  1015 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型类在转换类型是,好像是不允许的....还是有其他的语法,为啥会出现这种现象。
  1. class FanXingDemo2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 A<String> a = new B<String>();
  6.                 a.show("Hello");
  7.                 /*这样转会出现错误*/
  8.         //        B<String> b = (A<String>)a;
  9.         //        b.show("oye");

  10.                 C c = new D();
  11.                 D d = (D)c;//这样是可以的
  12.         }
  13. }

  14. class A<String>
  15. {
  16.         void show(String str){
  17.                 System.out.println("A.."+str);
  18.         }
  19. }

  20. class B<String> extends A<String>
  21. {
  22.         void show(String str){
  23.                 System.out.println("B.."+str);
  24.         }
  25. }

  26. class C
  27. {
  28. }

  29. class D extends C
  30. {
  31. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

1 个回复

倒序浏览
B<String> b = (A<String>)a;
子类不能接受父类引用。
举个例子吧:
如猫(b)是动物(a),可以这么说。
反过来你说动物(b)是猫(a)。就有点差强人意了。不是只有猫才是动物。
改的地方也简单。或许你是看错了。强转你打错了。
改正个小地方:你代码就能跑起来了。

B<String> b = (B<String>)a;

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马