};
private Object y ; public void setX(Object x){ } public void setY(Object y){ } public Object getX(){ } public Object getY(){ } return this.y ; return this.x ; this.y = y ; this.x = x ; 北京MLDN软件实训中心 联系电话:010-51283346 下面分别通过不同的数据类型对程序进行验证: public class PointDemo { }; public static void main(String args[]){ } Point p = new Point() ; p.setX(10) ; p.setY(30) ; // int --> Integer --> Object // int --> Integer --> Object 1、 使用int型
int x = (Integer) p.getX() ; // Object --> Integer --> int int y = (Integer) p.getY() ; // Object --> Integer --> int System.out.println(\的坐标:\System.out.println(\的坐标:\2、 使用float型 public class PointDemo { }; 3、 使用String型 public class PointDemo { public static void main(String args[]){ Point p = new Point() ; p.setX(\东经120度\
第(13)页 共(31)页
E-Mail:mldnqa@163.com
public static void main(String args[]){ } Point p = new Point() ; p.setX(10.3f) ; p.setY(30.5f) ; float x = (Float) p.getX() ; float y = (Float) p.getY() ; System.out.println(\的坐标:\System.out.println(\的坐标:\ };
} p.setY(\北纬100度\ String x = (String) p.getX() ; String y = (String) p.getY() ; 北京MLDN软件实训中心 联系电话:010-51283346 System.out.println(\的坐标:\System.out.println(\的坐标:\现在已经解决了本题目的要求,按照之前所学,现在肯定是最合理的解决方案,但是,本程序又存在了一个安全隐
患,因为所有的类型都使用Object进行接收,那么有没有一种可能,将X的坐标设置成了整型,而Y的坐标设置成了字符串?
public class PointDemo { }; }; 程序中的“
第(14)页 共(31)页
E-Mail:mldnqa@163.com
那么,对于以上的问题,在JDK 1.5之后就可以解决了,因为JDK 1.5有一个最大的特点,就是加入了泛型的操作。 class Point
} String x = p.getX() ; String y = p.getY() ; 北京MLDN软件实训中心 联系电话:010-51283346 System.out.println(\的坐标:\System.out.println(\的坐标:\泛型中的类型可以由外部决定,但是在设置基本数据类型的时候,只能使用包装类。 public class PointDemo { public static void main(String args[]){ } 设置泛型之后,程序更加安全了,可以避免掉类转换异常的出现。
Point
JDK 1.5之后增加了很多的新特性,其中有三项是最重要的新特性:泛型、枚举、Annotation,但是这三项中并不能泛型作为一个较大的新特性,在类库中使用较多,但是一般都是结合类集框架来看的,本次只是将一些基本的语法作为程序开发的重点。
进行讲解,先来观察基本概念。
3.4.1、泛型的作用
泛型的主要目的是为了解决在进行类转换过程中发生的类转换异常的问题,用于处理安全隐患的。所以为了避免掉ClassCastException在JDK 1.5之后增加了泛型的操作,泛型的具体含义就是一个类中的某些属性的操作类型由使用此类的时候决定。
在设置烦型的时候是通过“
当然,也可以同时设置多个泛型类型,例如: class Point
泛型确实可以保证程序避免安全隐患问题,但是程序中一旦使用了泛型之后对于引用传递上又会存在问题。 class Info
第(15)页 共(31)页
E-Mail:mldnqa@163.com
}; public class GenDemo01 { }; };
private T content ; public void setContent(T content){ } public T getContent(){ } return this.content ; this.content = content ; 北京MLDN软件实训中心 联系电话:010-51283346 public static void main(String args[]){ } public static void fun(Info
System.out.println(temp.getContent()) ; Info
System.out.println(temp.getContent()) ; temp.setContent(\System.out.println(temp.getContent()) ; System.out.println(temp.getContent()) ; Info
public class GenDemo01 { public static void main(String args[]){
第(16)页 共(31)页
E-Mail:mldnqa@163.com