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