使用反射时的返回类型

问题遇到的现象和发生背景

利用reflection动态调用getter,setter。并返回该DTO。
但是DTO的类型是固定的与Class<类型>冲突

用代码块功能插入代码,请勿粘贴截图

private KdsktCbmNyukinYoteiShiwake setCbmNyukinYoteiShiwakeItem(
KdsktCbmNyukinYoteiShiwake kdsktcbmnyukinyoteishiwake, String setteival, String itemid, String dbdatatype,
Integer dbdataintegerlength, Integer dbdatadecimallength)
{

    Class< ?> c =  Class.forName("jp.co.meiji.kd.domain.entity.KdsktCbmNyukinYoteiShiwake");
    Object obj = c.newInstance();
    try {
        Method metSet = obj.getClass().getMethod("setKaishaCd", String.class);
        metSet.invoke(obj, "S0001");
        Method metGet = obj.getClass().getMethod("getKaishaCd");
        metSet.setAccessible(true);
        metGet.setAccessible(true);
        
        log.debug(metGet.invoke(obj).toString());
    } catch (Exception e) {
        e.printStackTrace();
    }

    return c;
}
运行结果及报错内容

型不一致:无法从Clases<> 类型转变为 KdsktCbmNyukinYoteiShiwak类型

我想要达到的结果

最终希望能将c中set的结果返回

你返回错了吧!你看看哪个是你需要的。

public class Test {
    private Logger log = LoggerFactory.getLogger("Test");

    private KdsktCbmNyukinYoteiShiwake setCbmNyukinYoteiShiwakeItemReObject(
            KdsktCbmNyukinYoteiShiwake kdsktcbmnyukinyoteishiwake, String setteival, String itemid, String dbdatatype,
            Integer dbdataintegerlength, Integer dbdatadecimallength) throws Exception {
        Class<?> c = Class.forName("jp.co.meiji.kd.domain.entity.KdsktCbmNyukinYoteiShiwake");
        Object obj = c.newInstance();
        try {
            Method metSet = obj.getClass().getMethod("setKaishaCd", String.class);
            metSet.invoke(obj, "S0001");
            Method metGet = obj.getClass().getMethod("getKaishaCd");
            metSet.setAccessible(true);
            metGet.setAccessible(true);

            log.debug(metGet.invoke(obj).toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (KdsktCbmNyukinYoteiShiwake) obj;
    }

    private String setCbmNyukinYoteiShiwakeItemReString(
            KdsktCbmNyukinYoteiShiwake kdsktcbmnyukinyoteishiwake, String setteival, String itemid, String dbdatatype,
            Integer dbdataintegerlength, Integer dbdatadecimallength) throws Exception {
        Class<?> c = Class.forName("jp.co.meiji.kd.domain.entity.KdsktCbmNyukinYoteiShiwake");
        Object obj = c.newInstance();
        try {
            Method metSet = obj.getClass().getMethod("setKaishaCd", String.class);
            metSet.invoke(obj, "S0001");
            Method metGet = obj.getClass().getMethod("getKaishaCd");
            metSet.setAccessible(true);
            metGet.setAccessible(true);

            log.debug(metGet.invoke(obj).toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ((KdsktCbmNyukinYoteiShiwake) obj).getKaishaCd();
    }
}

img

返回错了,应该返回obj

(KdsktCbmNyukinYoteiShiwake) obj