黑马程序员技术交流社区
标题:
泛型,这里怎么理解?
[打印本页]
作者:
李节起
时间:
2012-4-11 22:32
标题:
泛型,这里怎么理解?
本帖最后由 李节起 于 2012-4-11 23:07 编辑
public class Test {
public static void main(String[] args){
add(2.2, 8);
}
public static <T extends Number> T add(T x, T y) {
return x + y;
}
}
复制代码
这里
return x+y;
+怎么理解?
作者:
薛飞飞
时间:
2012-4-11 22:40
return x + y;明显会报错啊,语法错误..你想理解什么?
作者:
黑马张平
时间:
2012-4-11 23:02
首先你的代码最后少一个 } ,我试了一下。结果报一大堆错误!受不了了。!
Text1.java:16: 错误: 对于+(T,T), 找不到合适的方法
return x + y;
^
方法 <匿名>.+(int,int)不适用
(无法通过方法调用转换将实际参数T转换为int)
方法 <匿名>.+(long,long)不适用
(无法通过方法调用转换将实际参数T转换为long)
方法 <匿名>.+(float,float)不适用
(无法通过方法调用转换将实际参数T转换为float)
方法 <匿名>.+(double,double)不适用
(无法通过方法调用转换将实际参数T转换为double)
方法 <匿名>.+(Object,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(boolean,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为boolean)
方法 <匿名>.+(double,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为double)
方法 <匿名>.+(float,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为float)
方法 <匿名>.+(long,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为long)
方法 <匿名>.+(int,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为int)
方法 <匿名>.+(<空值>,Object)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,boolean)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,double)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,float)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,long)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,int)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,String)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(boolean,String)不适用
(无法通过方法调用转换将实际参数T转换为boolean)
方法 <匿名>.+(double,String)不适用
(无法通过方法调用转换将实际参数T转换为double)
方法 <匿名>.+(float,String)不适用
(无法通过方法调用转换将实际参数T转换为float)
方法 <匿名>.+(long,String)不适用
(无法通过方法调用转换将实际参数T转换为long)
方法 <匿名>.+(int,String)不适用
(无法通过方法调用转换将实际参数T转换为int)
方法 <匿名>.+(String,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,boolean)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,double)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,float)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,long)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,int)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,String)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(Object,String)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,Object)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(int)不适用
(实际参数列表和形式参数列表长度不同)
方法 <匿名>.+(long)不适用
(实际参数列表和形式参数列表长度不同)
方法 <匿名>.+(float)不适用
(实际参数列表和形式参数列表长度不同)
方法 <匿名>.+(double)不适用
(实际参数列表和形式参数列表长度不同)
方法 <匿名>.+(int,int)不适用
(无法通过方法调用转换将实际参数T转换为int)
方法 <匿名>.+(long,long)不适用
(无法通过方法调用转换将实际参数T转换为long)
方法 <匿名>.+(float,float)不适用
(无法通过方法调用转换将实际参数T转换为float)
方法 <匿名>.+(double,double)不适用
(无法通过方法调用转换将实际参数T转换为double)
方法 <匿名>.+(Object,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(boolean,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为boolean)
方法 <匿名>.+(double,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为double)
方法 <匿名>.+(float,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为float)
方法 <匿名>.+(long,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为long)
方法 <匿名>.+(int,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为int)
方法 <匿名>.+(<空值>,Object)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,boolean)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,double)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,float)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,long)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,int)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(<空值>,String)不适用
(无法通过方法调用转换将实际参数T转换为<空值>)
方法 <匿名>.+(boolean,String)不适用
(无法通过方法调用转换将实际参数T转换为boolean)
方法 <匿名>.+(double,String)不适用
(无法通过方法调用转换将实际参数T转换为double)
方法 <匿名>.+(float,String)不适用
(无法通过方法调用转换将实际参数T转换为float)
方法 <匿名>.+(long,String)不适用
(无法通过方法调用转换将实际参数T转换为long)
方法 <匿名>.+(int,String)不适用
(无法通过方法调用转换将实际参数T转换为int)
方法 <匿名>.+(String,<空值>)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,boolean)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,double)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,float)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,long)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,int)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,String)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(Object,String)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(String,Object)不适用
(无法通过方法调用转换将实际参数T转换为String)
方法 <匿名>.+(int)不适用
(实际参数列表和形式参数列表长度不同)
方法 <匿名>.+(long)不适用
(实际参数列表和形式参数列表长度不同)
方法 <匿名>.+(float)不适用
(实际参数列表和形式参数列表长度不同)
方法 <匿名>.+(double)不适用
(实际参数列表和形式参数列表长度不同)
其中, T是类型变量:
T扩展已在方法 <T>add(T,T)中声明的Object
2 个错误
作者:
罗旭维
时间:
2012-4-12 14:58
我也在开始学java了,理解不深刻,希望有机会跟大家多多交流 :)
对这个问题 我觉得是因为,Number类不支持+,-运算符。
java不支持运算符重载,Integer等类的+是由编译器转换为其他方法实现的。显然Number没有这个待遇。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2