黑马程序员技术交流社区

标题: 泛型的一个小细节问题 [打印本页]

作者: 夜默    时间: 2013-7-8 15:55
标题: 泛型的一个小细节问题
本帖最后由 巩建 于 2013-7-8 16:22 编辑

  calss A implements Compartor<String> 传进的去参数 均为String类型
{
     public int  compare(String s1,String s2){ // 既然穿进去的都是String类型的  为什么还需要让此方法中的参数再次指定是String类型的


    }
}


作者: majunm    时间: 2013-7-8 16:09
泛型限定是String了 你只能传String 不是么
作者: 夜默    时间: 2013-7-8 16:16
我是想说 加了泛型之后,泛型类里面的方法是否可以省略参数类型
作者: 夜默    时间: 2013-7-8 16:22
尹桥印 发表于 2013-7-8 16:14
java方法的参数格式就是:类型 变量名  这个从java一出来就是这么设置的
泛型是jdk1.5出来的,你总不可能前 ...

看来开发java的重任,就要托付在我们手中了
作者: toShareBeauty    时间: 2013-7-9 00:37
本帖最后由 toShareBeauty 于 2013-7-9 09:06 编辑
巩建 发表于 2013-7-8 16:16
我是想说 加了泛型之后,泛型类里面的方法是否可以省略参数类型

如果省略,那么方法定义的格式不是就和以前的不同了么,书写上倒是简单了,但是这样岂不是更加麻烦,因为还要多记一种相似东西,而且标记一个方法最重要的依据就是方法名和参数列表中的参数类型(c++ 编译器直接就是用 方法名_参数1类型_参数2类型_... 来标志函数,编译后函数只是一个代码块,方法名_参数1类型_参数2类型_... 是代码块的标号,编译器还会在此处加上栈处理相关的指令集,来处理局部变量和参数的传递),按照你的想法,不用泛型时,类实现的接口的方法的时候,方法参数列表中的类型都可以省略了。c 语言中,方法在声明的时候,方法中的参数名可以省略(c、c++中的函数有声明和定义之分)。如果接口在定义的时候方法中的参数名我看可以省略,但是降低了程序的可读性,所以终归不是好的策略。




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