发表于: 2017-10-07 18:39:29

1 752


今天完成的事情:

1.今天简单学习了泛型的概念

 一般的类和方法,只能使用具体的类型,除了基本类型,还有自定义的类,如果要编写可以应用于多种类的代码,就需要利用泛型的这一类型。“容器类”最能体现泛型的特点,下面就举一个简单的实例来说明泛型的使用和特点。

(1)首先定义一个简单的容器类,它只能持有一个对象

class A{
}
public class Holder01 {
private A a;
   public Holder01(A a){
this.a=a;
   }
public A getA(){
return a;
   }
public static void main(String[] args) {
Holder01 holder01=new Holder01(new A());
       System.out.println(holder01.getA().getClass().getName());
   }
}

(2)上面这个小例子,从运行的结果来看,确实时可用得到A这个类的,但是它也只能是得到A这一个类,如果我想得到B这个类,那么上面的代码就无效了,也就是说代码的可复用性是不具备的。为了可以实现代码的可复用性,可以从对象的继承特点来考虑修改代码,所有的类就是继承Object这个类的,不妨把A类改为Object。

public class Holder02 {
private Object obj;
   public Holder02(Object obj){
this.obj=obj;
   }
public Object getObj(){
return obj;
   }
public void setobj(Object obj){
this.obj=obj;
   }

public static void main(String[] args) {
Holder02 holder02=new Holder02(new A());
       System.out.println(holder02.getObj().getClass().getName());
       holder02.setobj("String类型");
       System.out.println(holder02.getObj().getClass().getSimpleName());
       holder02.setobj(100);
       System.out.println(holder02.getObj().getClass().getSimpleName());
   }
}

(3)这样把代码改过之后,就可以获得你想要的任何一个类,这样一来姐可以实现代码的可复用性。但是其实这种做法还不是不够彻底,最好能将类型参数化,当我们需要某个类的时候,直接把类型当做参数传进去,以此来获得我们想要的类。不像上面的做法中,是把Object类指明为参数。这个时候就是需要泛型这个类。

public class Holder03<T> {
private T t;
   public Holder03(T t){
this.t=t;
   }
public void setT(T t){
this.t =t;
   }
public T getT(){
return t;
   }

public static void main(String[] args) {
Holder03<A> holder03=new Holder03<A>(new A());
       A a=holder03.getT();
       System.out.println(a.getClass().getName());
   }
}

(4)上面这个例子就是定义了泛型Holder03<T>,其中<T>就是泛型中类型参数化的体现,当你需要某个类的时候,只需要将其替代T即可。

明天的计划:

(1)继续学习Java web

遇到的问题:

暂无

收获:

1.泛型的概念简而言之就是类的参数化,当不确定需要某个类的时候可以将其改为泛型,这样有利于代码的复用性。



返回列表 返回列表
评论

    分享到