###集合是一个用来存放对象的容器,java集合类存放在java.util包中。特别注意的是,集合里面只能存放对象,或者说是对象的引用,对象本身存放在堆内存中;集合可以存放不同类型,不限数量的类型,这是因为如此,集合的操作具体到某一个数据类型的时候,需要强制转换。于是存在安全问题,
### 泛型是一种参数类型,它可以是除了基本数据类型的任意类型的数据,例如对象或者接口。使用泛型可以用来建立安全的集合框架,它可以限制集合中存放元素的类型。例如:class People<E>,People是泛型类的名称,E是其中的泛型,它可以指定任何数据类型,除了基类型;E e ;声明一个对象,没有类型,可以通过引用传值传递一个具体类型的对象引用给e,这个时候e就只能是这种类型的数据了。
### 下面是一个具体的代码:
package 计算体积_泛型;
class Cone<E>{
double height;
E bottom; //用泛型类E声明对象bottom;
public Cone (E b){
bottom = b;
}
public void setHeight(double h){
height = h;
}
public double computerVolume(){
String s = bottom.toString(); //泛型变量只能调用从Objict继承或重写的方法。
double area = Double.parseDouble(s);
return 1.0/3.0*area*height;
}
}
class Rect{
double sideA,sideB,area;
Rect(double a,double b){
sideA = a;
sideB = b;
}
public String toString (){
area = sideA*sideB;
return ""+area;
}
}
class Circle{
double area,radius;
Circle(double r){
radius = r;
}
public String toString (){
area = radius*radius*Math.PI;
return ""+area;
}
}
public class Example_1 {
public static void main(String []args){
Circle circle = new Circle(10);
Cone<Circle> coneOne = new Cone<Circle>(circle); //创建一个圆锥对象。
coneOne.setHeight(16);
System.out.println(coneOne.computerVolume());
Rect rect = new Rect(15,23);
Cone<Circle> coneTwo = new Cone<Circle>(circle); //创建一个方锥对象。
coneTwo.setHeight(98);
System.out.println(coneTwo.computerVolume());
}
}