黑马程序员技术交流社区

标题: 泛型练习题的方法验证 [打印本页]

作者: 张 涛    时间: 2012-9-13 10:59
标题: 泛型练习题的方法验证
张老师讲的泛型中有几个练习题,这是第一题,写的很简单,但如何验证呢,我用了两种方式,都遇到了问题。
代码:
  1. public static void main(String[] args) throws Exception, NoSuchMethodException {
  2.                 //第一种验证,打印出的是Vector。不是已经转换了吗?
  3.                 List l = toObgect(new Vector());
  4.                 System.out.println(l.getClass().getName());
  5.                 //第二种验证,无法把object转化为string,报错,难道不能由父类强转为子类,只能由子类转为父类吗?
  6.                 String s = toObgect(new Object());
  7.                 System.out.println(s.getClass().getName());
  8.         }
  9.         //转化方法
  10.         public static <T> T toObgect(Object o){
  11.                 return (T)o;
  12.         }
复制代码

作者: 彭润生    时间: 2012-9-13 11:28
父类持有子类的引用才能强转为子类,多态,toObgect(new Object());这个是Object类型的需要强制转换才能付给String 这样因该可以了String s = (String)toObgect(new Object());你在试试
作者: 李菁    时间: 2012-9-13 14:46
你Object没有初始化一个值
这样写就可以把Object转成String
import java.util.List;
import java.util.Vector;
public class Test {
        public static void main(String[] args)throws Exception {
                List l = toObgect(new Vector());
                System.out.println(l.getClass().getName());
                //第二种验证,无法把object转化为string,报错,难道不能由父类强转为子类,只能由子类转为父类吗?
                Object o="abc";
                String s = toObgect(o);
                System.out.println(s.getClass().getName());
        }
        public static <T> T toObgect(Object o){
              return (T)o;
   }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2