如何生成Optional <class <?>&gt;在JCodeModel?

时间:2017-03-21 11:15:54

标签: generics reflection nested-generics sun-codemodel jcodemodel

我想为以下方法创建JCodeModel:

private static Optional<Class<?>> getTypeOfId(String fieldName) {
        switch (fieldName.toLowerCase()) {
            case "IDFORCLASSX":
            {
                return Optional.of(X.class);
            }
            default:
            {
                return Optional.empty();
            }
        }
    }

我目前正在使用下面的代码来创建类的返回类型。

AbstractJClass optionalOfClassType = codeModel.ref(Optional.class)
 .narrow(codeModel.ref(Class.class)
 .narrow(codeModel.ref("?")));

但是上面的代码给出了一个高优先级的FindBug错误PRMC_POSSIBLY_REDUNDANT_METHOD_CALLS

有人可以帮我优化上面的代码吗?

1 个答案:

答案 0 :(得分:0)

大致情况:

codeModel
    .ref(Optional.class)
    .narrow(
        codeModel.ref(Class.class).narrow(
            codeModel.ref(Object.class).wildcard()));