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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© onlyonewf 初级黑马   /  2012-6-10 10:47  /  1275 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. public class Test {
2. public <T extends Comparable> T findLarger(T x, T y) {
3. if(x.compareTo(y) > 0) {
4. return x;
5. } else {
6. return y;
7. }
8. }
9. }
and:
22. Test t = new Test();
23. // insert code here
Which two will compile without errors when inserted at line 23?
(Choose two.)
A. Object x = t.findLarger(123, “456”);
B. int x = t.findLarger(123, new Double(456));
C. int x = t.findLarger(123, new Integer(456));
D. int x = (int) t.findLarger(new Double(123), new Double(456));

3 个回复

正序浏览
1.       public class Test {
2. public <T extends Comparable> T findLarger(T x, T y) { //
泛型方法
3. if(x.compareTo(y) > 0) {
4. return x;
5. } else {
6. return y;
7. }
8. }
9. }
and:
22. Test t = new Test();
23. // insert code here
Which two will compile without errors when inserted at line 23?
(Choose two.)
2.     这题考察的是泛型方法中参数类型的推断知识
3.       Object x = t.findLarger(123, "456");//编译无错 ,123 “456”的最大交集是Object
4.          int x =(int) t.findLarger(new Double(123), new Double(456));//编译错误,不能从 Double 强制类型转换为 int
5.             int x = t.findLarger(123, new Integer(456));//正常 int 和Integer之间可以拆箱装箱
6.              int x = t.findLarger(123, new Double(456));//编译错误,类型不匹配:不能从 Number&Comparable<?> 转换为 int
7.       具体可看张老师的ppt截图

360截图20120610131526437.jpg (70.05 KB, 下载次数: 12)

360截图20120610131526437.jpg
回复 使用道具 举报
选择 CD 两项  得保证参数传入的类型一致。
回复 使用道具 举报
  1.                  int x = findLarger(123, new Double(456));//123可以装箱为Integer,跟后面的Double的共同父类是Number,所以会返回Number类型,用int型来接受,就会报错
  2.                  int u = findLarger(123, new Integer(456));//两者都是Integer型,返回的也是Intger,自动拆箱,所以不会报错
  3.                  int y = (int)findLarger(new Double(123), new Double(456));//Double跟Double,返回的也会是Double类型,想直接强转为int型,会报错
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马