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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张凯 中级黑马   /  2012-7-23 13:20  /  1788 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张凯 于 2012-7-24 07:00 编辑

请问很多代码这么写的目的是什么?
  1. public class test<X,M,C> {
  2.         public X get(C t){
  3.                 System.out.println(t);
  4.                 return (X)"123";
  5.         }
  6.         public static void main(String[] args){
  7.                 test t1 = new test();
  8.                 System.out.println(t1.get("sss"));
  9.         }
  10. }
复制代码
在test定义了X,M,C,但是实际上往get里传值的时候还是被当成object算了,我看public X get(C t)与public Object get(Object t)没区别阿,范型也起不到编译时类型检查的作用,难道仅仅是为了作为一种Object的符号别名提醒使用者此时应该传入什么类型的Object?

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
你创建t1对象时,也没加泛型限定啊!!!
回复 使用道具 举报
//你的程序定义了泛型(准确的说叫,泛型类和泛型方法)
//虽然你定义了,但是没有使用啊,就像List l=new ArrayList();和List <Integer> l=new ArrayList <Integer>();前者没有使用泛型,后再使用了泛型
//泛型的两个好处是(1)是运行时的错误变成编译时错误,
//                            (2)避免了强制转型
//                                         这两点是不会错的
//
//
public class Test<X,M,C> {
    public X get(C t){
            System.out.println(t);
            return (X)"123";
    }
    public static void main(String[] args){
            Test<String, Integer, Integer> t1 = new Test<String, Integer, Integer>();
            //这句话告诉你,现在所有的X代表String类型,所有的M和C代表Integer类型,
            System.out.println(t1.get("123"));//改成t1.get(123),才对。编译时会告诉你出错滴
    }
}

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
rslheima 发表于 2012-7-23 14:35
//你的程序定义了泛型(准确的说叫,泛型类和泛型方法)
//虽然你定义了,但是没有使用啊,就像List l=new  ...

谢谢了,有点头绪了。
回复 使用道具 举报
当然有区别了?Obejct是有有类的父类,是上帝奥,所以这又和多态结合到一起了
class Person  //extends Object 默认的奥
{
      pulbic void getShow()
    {
         System.out.println("吃");
    }
}
class My extends Person
{
  public static void main(String[] args)
{
     Person p=new My();//向上转型,父类不能调用子类的特有对象奥
    //p.get()不能奥
   My y=(My)p;//向下转型后,子类调用自己的特有方法奥
   y.get()
}
   public  void get()
    {
          System.out.println("喝");
    }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马