`

泛型

    博客分类:
  • j2se
 
阅读更多

第一:泛型:问题:1.在运算时候必须要向下转型。向下转型存在安全问题(可能会把某个子类落下)2.如果子类比较多,程序显得比较臃肿。因此出现泛型,在jdk1.5以后出现的
第二:泛型好处:将数据类型参数化。
第三:泛型的实现
         1.泛型类:(1).定义泛型:class 类名<T>   (2).使用泛型:在创建对象的时候将泛型具体化,如果不具体化就默认为object类型
         2.泛型接口:(1).interfance 接口名<T> (2).在子类实现接口的时候,如果不指定具体的泛型类型,该子类也是泛型类。
         3.泛型方法:(1).public T 方法名(T,X)   (参数类型是泛型,返回值类型是泛型)泛型参数可以多个
第四:上下限:?是通配符,可以接受任意类型。Number;类的子类是int,double,long,short,float等,起码是个数字。
     限定上限:? extends Fu   父类和父类的子类能用
     限定下限:? super Zi      子类和子类的父类能用

第五:代码实现
public class Circle<T> {
 private T x;
 private T y;
 private T r;
 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 T getR() {
  return r;
 }
 public void setR(T r) {
  this.r = r;
 }
 public Circle() {
  super();
  // TODO Auto-generated constructor stub
 }
 public Circle(T x, T y, T r) {
  super();
  this.x = x;
  this.y = y;
  this.r = r;
 }
 @Override
 public String toString() {
  return "Circle [x=" + x + ", y=" + y + ", r=" + r + "]";
 }

}

 

 

 

 

public class CircleTest {
 public static void main(String[] args) {
  Circle c=new Circle(12,5,8.5);
  System.out.println(area(c));
 }
   
 public static  Number  area(Circle<? extends Number> c){
  return 3.14*c.getR().intValue()*c.getR().intValue();
  
 }
 
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics