发表于: 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.泛型的概念简而言之就是类的参数化,当不确定需要某个类的时候可以将其改为泛型,这样有利于代码的复用性。
评论