黑马程序员技术交流社区

标题: 泛型的一点不解 [打印本页]

作者: 赵英坤    时间: 2012-3-14 16:09
标题: 泛型的一点不解
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方法分别代表什么,有什么不一样的地方

作者: 吴璞玉    时间: 2012-3-14 17:12
两个方法的泛型类型是不同的,show方法的泛型类型和类的泛型类型一致,类的泛型类型改变show方法的也随之改变,print方法则有自己的泛型类型
作者: 张润政    时间: 2012-3-14 17:58
泛型:JDK1.5之后出现的一个新特性,用于解决安全问题,是一个安全机制。泛型类定义的泛型在这个那个类中有效。泛型类的对象明确要操作的具体类型后,所要操作的类型就已经固定了。
为了让不同方法可以操作不同类型,而且类型还不确定那么可以讲泛型定义在方法上。
这两个方法除了他们是在同一个类中,没有什么特殊的联系。这个show方法,它没有在返回值类型上加上泛型,那么我们就认为它的参数所接收的类型是T,因此它只能操作T类型的参数。类的泛型变了,它的参数接收类型也会跟着改变。
print方法中,在返回类型前加上了一个泛型Q,那么他就接收的是Q类型。
作者: lucky_xingxing    时间: 2012-3-14 18:53
show方法里面传递的对象必须是类定义了的,只能传定义的那个  ,不能传其他的  而print方法的泛型是定义在方法上面的,也就是可以传入非类定义的那个类型
teacher<Stirng>  ts = new teacher<String>();
第一个show方法只能传入String类型的参数
第二个print方法既可以传入String类型也可以传入Integer 类型(当然这个类型自己定义相传什么传什么)的参数
作者: 李爱军    时间: 2012-3-14 19:37
这是两个不同的的泛型类型
1.show方法的泛型类型和类的泛型类型一致。也就是说类的泛型类型是什么,show方法的类型也就是是什么。
2.print方法类型是由传入的参数类型而定。你的参数q传的是什么类型,那么print方法类型就是这个传入的类型了。




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