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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵英坤 中级黑马   /  2012-3-14 16:09  /  1815 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class teacher<T>{
        private String name = "";
        private int age = 0;
        public void show(T t){
                System.out.println("show:" + t);
        }
        public <Q> void print(Q q){
                System.out.println("print:" + q);
        }
}

show方法和print方法分别代表什么,有什么不一样的地方

4 个回复

倒序浏览
两个方法的泛型类型是不同的,show方法的泛型类型和类的泛型类型一致,类的泛型类型改变show方法的也随之改变,print方法则有自己的泛型类型
回复 使用道具 举报
泛型:JDK1.5之后出现的一个新特性,用于解决安全问题,是一个安全机制。泛型类定义的泛型在这个那个类中有效。泛型类的对象明确要操作的具体类型后,所要操作的类型就已经固定了。
为了让不同方法可以操作不同类型,而且类型还不确定那么可以讲泛型定义在方法上。
这两个方法除了他们是在同一个类中,没有什么特殊的联系。这个show方法,它没有在返回值类型上加上泛型,那么我们就认为它的参数所接收的类型是T,因此它只能操作T类型的参数。类的泛型变了,它的参数接收类型也会跟着改变。
print方法中,在返回类型前加上了一个泛型Q,那么他就接收的是Q类型。
回复 使用道具 举报
show方法里面传递的对象必须是类定义了的,只能传定义的那个  ,不能传其他的  而print方法的泛型是定义在方法上面的,也就是可以传入非类定义的那个类型
teacher<Stirng>  ts = new teacher<String>();
第一个show方法只能传入String类型的参数
第二个print方法既可以传入String类型也可以传入Integer 类型(当然这个类型自己定义相传什么传什么)的参数
回复 使用道具 举报
这是两个不同的的泛型类型
1.show方法的泛型类型和类的泛型类型一致。也就是说类的泛型类型是什么,show方法的类型也就是是什么。
2.print方法类型是由传入的参数类型而定。你的参数q传的是什么类型,那么print方法类型就是这个传入的类型了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马