Java泛型4―泛型的上限和下限

2014-11-24 03:19:30 · 作者: · 浏览: 0

在写程序的时候,我们希望某一个函数接收的参数,有一个范围的限制,这时候我们就可以考虑使用泛型的上限和下限去解决。我们先看一段代码,然后再去详细解释。

class Point

{

private T x;

private T y;

public T getX()

{

return x;

}

public void setX(T x)

{

this.x = x;

}

public T getY()

{

return y;

}

public void setY(T y)

{

this.y = y;

}

}

public class Demo2

{

// static void show(Point< extends Number> p)//此时这个函数只能接收Number及其子类 此时show(p2)会报错

static void show(Point< super String> p)//此时这个函数只能接收String及其父类 此时show(p1)会报错

{

System.out.println(p.getX());

System.out.println(p.getY());

}

public static void main(String[] args)

{

Point p1 = new Point();

p1.setX(2);

p1.setY(4);

Point p2 = new Point();

p2.setX("东经43度");

p2.setY("北纬34度");

show(p1);

show(p2);

}

}

在这段程序中我们定义了一个函数show,我们在参数的后面使用的< .....>这里的问号,表示的通配符,代表接收的实际参数的类型。我们可以看出来在程序中我先注释了entends的一行代码。这个表示参数的上限,接收的参数必须是Number或者是其子类,如果使用这个的时候,我们调用show方法的时候,传递p2会报错,因为p2不是Number或者其子类。同样的,我们使用super关键字,这个表示参数的上限,程序中表示接收的参数只能是String或者其父类,这时候show方法的参数是p1会报错,不满足下限的要求。

对于上限和下限基本的使用就是这样,希望对你有帮助。

如果哪里写错了,还请指出。

【作者:孟祥月 博客:http://blog.csdn.net/mengxiangyue】