:P java SE 5.0 增加了Generics特性,在定义类的时候允许带有“参数”。这个特性的好处就是可以在使用时附加一个类型,但是在定义时却隐藏了具体的使用类型。特别是对于Collection API有非凡的意义。从前,Collection为了保证适用范围尽量的大,将element定义为Object类型,这样,一个添加到Collection的对象便会丧失它的类型信息。而通过Generics,就能避免这种情况,“参数”就能保存对象的类型信息,同时也能起到限制作用。
[code]
/**
*
*/
package com.test.generics;
import java.util.Date;
/**
* @author Administrator
*
*/
public class CTest<E>
{
protected E var;
public void setVar(E e)
{
var = e;
}
public E getVar()
{
return var;
}
public String toString()
{
return CTest.class.toString();
}
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
CTest<String> ct = new CTest<String>();
ct.setVar("hello world! ");
System.out.println(ct.getVar());
CTest<Date> cd = new CTest<Date>();
cd.setVar(new Date());
System.out.println(cd.getVar());
CTest cc = new CTest();
cc.setVar(new CTest());
System.out.println(cc.getVar());
System.out.println(CTest.class.isInstance(ct));
}
}
[/code]
一点总结:
1 如果不指定“参数”,默认Object
2 System.out.println(CTest.class.isInstance(ct));//true
[code]
/**
*
*/
package com.test.generics;
import java.util.Date;
/**
* @author Administrator
*
*/
public class CTest<E>
{
protected E var;
public void setVar(E e)
{
var = e;
}
public E getVar()
{
return var;
}
public String toString()
{
return CTest.class.toString();
}
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
CTest<String> ct = new CTest<String>();
ct.setVar("hello world! ");
System.out.println(ct.getVar());
CTest<Date> cd = new CTest<Date>();
cd.setVar(new Date());
System.out.println(cd.getVar());
CTest cc = new CTest();
cc.setVar(new CTest());
System.out.println(cc.getVar());
System.out.println(CTest.class.isInstance(ct));
}
}
[/code]
一点总结:
1 如果不指定“参数”,默认Object
2 System.out.println(CTest.class.isInstance(ct));//true