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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 田向向 于 2012-6-21 16:17 编辑

public class TestShowGeneric {
public static void main(String[] args) {
TestShowGeneric a = new TestShowGeneric();
ShowGeneric b = new ShowGeneric();
b.setA("对ShowGeneric类中方法的调用");
a.fun(b);
}
public static void fun(ShowGeneric<? extends Number> c) {
System.out.println(c.getA());
}
}
class ShowGeneric<D> {
private D a;

public D getA() {
return a;
}

public void setA(D a) {
this.a = a;
}
}
在b.setA("对ShowGeneric类中方法的调用");a.fun(b);实参b为什么能够成功的传给public static void fun(ShowGeneric<? extends Number> c) 形参c;

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 新手报到,赞一个!

查看全部评分

5 个回复

倒序浏览
创建ShowGeneric对象b的时候没有定义泛型,所以fun()的形参ShowGeneric<? extends ArrayList>就没什么意义了,也就是你想传什么参数都行,只要是ShowGeneric对象
回复 使用道具 举报

  1. public class TestShowGeneric
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 TestShowGeneric a = new TestShowGeneric();
  6.                 ShowGeneric b = new ShowGeneric();
  7.                
  8.                 b.setA("对ShowGeneric类中方法的调用");
  9.                
  10.                 a.fun(b);
  11.         }
  12.         public static void fun(ShowGeneric<? extends Number> c)
  13.         {
  14.                 System.out.println(c.getA());
  15.         }
  16. }
  17. class ShowGeneric<D>
  18. {
  19.         private D a;

  20.         public D getA()
  21.         {
  22.         return a;
  23.         }

  24.         public void setA(D a)
  25.         {
  26.         this.a = a;
  27.         }
  28. }
复制代码
楼主的代码格式太乱了,我自己整理了一下.
首先介绍一下Number,他是一个类.
<?>
? extends T : 接收T类型或者T的子类型.
而Number的子类有直接已知子类: AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short.其实这些在这个代码中用不上,为什么呢?
因为你传的b它就是ShowGeneric类的对象(或者可以说你的fun()方法的形参就是ShowGeneric类型的参数),而且还没确定泛型是什么类型的.
所以肯定能行.当然了如果你想传什么类型的,必须在NUmber或者是其子类(以上已列出)中找,
才能成功.




评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
田向向 + 2 很给力!
职业规划-刘倩老师 + 1

查看全部评分

回复 使用道具 举报
  1. ShowGeneric b = new ShowGeneric();
复制代码
b是ShowGeneric类型的引用变量
fun(ShowGeneric<? extends Number> c)这里也是要求你传入ShowGeneric类型的引用,所以能传成功。
回复 使用道具 举报
龙秋地 发表于 2012-6-20 20:03
楼主的代码格式太乱了,我自己整理了一下.
首先介绍一下Number,他是一个类.

谢谢,我是新手,多多赐教
回复 使用道具 举报
看看...........................
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马