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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李节起 中级黑马   /  2012-4-11 22:32  /  2116 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李节起 于 2012-4-11 23:07 编辑
  1. public class Test {
  2.         public static void main(String[] args){
  3.                 add(2.2, 8);
  4.         }


  5.         public static <T extends Number> T add(T x, T y) {
  6.                 return x + y;
  7.         }
  8. }   
复制代码
这里
return x+y;

+怎么理解?

3 个回复

倒序浏览
return x + y;明显会报错啊,语法错误..你想理解什么?
回复 使用道具 举报
首先你的代码最后少一个  }  ,我试了一下。结果报一大堆错误!受不了了。!
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 个错误
回复 使用道具 举报
我也在开始学java了,理解不深刻,希望有机会跟大家多多交流 :)
对这个问题 我觉得是因为,Number类不支持+,-运算符。
java不支持运算符重载,Integer等类的+是由编译器转换为其他方法实现的。显然Number没有这个待遇。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马