泛型积累
获取到子类设置的泛型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;
??? }
?