首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

泛型累积

2012-12-24 
泛型积累获取到子类设置的泛型classpublic abstract class PaginationDataModelT extends IEntity?class

泛型积累
获取到子类设置的泛型class

public abstract class PaginationDataModel<T extends IEntity>

?

class AgentDataModel extends PaginationDataModel<AgentSmp>

?

在PaginationDataModel类中可以取到具体子类中设置的class,能获取到AgentSmp class

?

?Class itemClass;

public PaginationDataModel (){

?? Class clazz = getClass();
???while (!(clazz.getGenericSuperclass() instanceof ParameterizedType)) {
????clazz = clazz.getSuperclass();
???}
???Object o = ((ParameterizedType) clazz.getGenericSuperclass()).getActualTypeArguments()[0];

???Class itemClass;
???if (o instanceof TypeVariable) {
????itemClass = (Class<T>) ((TypeVariable) o).getBounds()[0];
???} else {
????itemClass = (Class<T>) o;
???}

1】类型上定义泛型

public interface TreeNode<T>{

2】方法上定义泛型

泛型方法必须有返回值,没有返回值的方法不能使用泛型

public <E extends BaseEntity> void dataTransferToPoList(List<E> vos,List<E> pos){

?????? for(E vo:vos){//source

?????????? boolean add=true;

?????????? for(E po:pos){//target

????????????? if(vo.equals(po)){//update

????????????????? vo.dataTransferToPo(po);

????????????????? add=false;

????????????????? break;

????????????? }

?????????? }

?????????? if(add){

????????????? pos.add(vo);

?????????? }

?????? }

??? }

泛型方法中不能直接对泛型进行new操作

public <T extends Record> T getRecord(T t){

?????? //

?????? return t;

??? }

?

热点排行