在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java如何利用泛型提取出來一個公用的將DTO類轉成VO類的靜態(tài)方法?

java如何利用泛型提取出來一個公用的將DTO類轉成VO類的靜態(tài)方法?

同事提供了解決辦法,但不太是我想要的,所以來提問的

同事告訴我的方法

public static <DTO, VO> VO getVO(DTO dto, Function<DTO, VO> function){
    return function.apply(dto);
}

使用方式:

getVO(new TestDTO(),TestVO::new);

同事的方法可能是最完美的了;不需要對VO類和DTO類進行改造,但是我有點軸,想知道另一種方式,不忍心老纏著同事問,

我想要的方法:

public static <DTO,VO>VO getVO(DTO dto){
    return new VO(dto);
}

使用方式:

getVO(new TestDTO());

VO類:

public class TestVO {
    private String name;

    public TestVO(TestDTO dto) {
        this.name = dto.getName();
    }
}

DTO類

public class TestDTO {
    private String name;

    public String getName() {
        return name;
    }
}

所以想請問下大家,以我想要的那種方式該如何改造代碼才可以實現(xiàn)呢?

public static <DTO,VO>VO getVO(DTO dto){
    return new VO(dto);
}

靜態(tài)檢查報錯:

Type parameter 'VO' cannot be instantiated directly

我想用的使用方式可以使 一個靜態(tài)類接受一個泛型,然后調用getVO方法,

public class VOUtil<VO>{
    public static <DTO>VO getVO(DTO dto){
        return new VO(dto);
    }
} 

使用方式如下:

VOUtil<TestVO>.getVO(dto);

這個樣子可行么

回答
編輯回答
毀憶

理想很豐滿,現(xiàn)實很骨感,下面這段引用(《Core Java》-- 10th Edtion)應該可以給你答案和原因以及建議:
圖片描述

2017年3月6日 13:13