gpt4 book ai didi

java - cxf wsdl2java 生成 'protected' 属性,如何生成私有(private)属性?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:51 24 4
gpt4 key购买 nike

我正在使用带有 wsdl2java 目标的 cxf-codegen-plugin (maven) 从我的 wsdl 生成 java 代码。

问题是当我想要private 属性时,它会生成protected 属性:

我的 wsdl 元素:

<element name="productCode" type="string"/>

预期:

@XmlElement(required = true)
private String productCode;

结果:

@XmlElement(required = true)
protected String productCode;

是否有任何东西要添加到我的 wsdl 或插件配置中以生成私有(private)字段?

谢谢!

最佳答案

我认为这是因为 jaxb 而不是 cxf。您需要开发自己的 xjc 插件才能做到这一点。

https://jaxb.java.net/nonav/2.0.2/docs/developPlugins.html

也谷歌关于开发和插入你自己的xjc创建插件是正确的方法。重新使用本论坛中的代码

public class PrivateMemberPlugin
extends Plugin
{

@Override
public String getOptionName()
{
return "Xpm";
}

@Override
public String getUsage()
{
return " -Xpm : Change members visibility to private";
}

@Override
public boolean run(Outline model, Options opt, ErrorHandler errorHandler)
throws SAXException
{
for (ClassOutline co : model.getClasses())
{

JDefinedClass jdc = co.implClass;
// avoid concurrent modification by copying the fields in a new list
List<JFieldVar> fields = new ArrayList<JFieldVar>(jdc.fields().values());
for (JFieldVar field : fields)
{
// never do something with serialVersionUID if it exists.
if (!field.name().equalsIgnoreCase("serialVersionuid"))
{
// only try to change members that are not private
if (field.mods().getValue() != JMod.PRIVATE)
{
// since there is no way to change the visibilty, remove the field an recreate it
jdc.removeField(field);
jdc.field(JMod.PRIVATE, field.type(), field.name());

}
}
}

}
return true;
}

}

关于java - cxf wsdl2java 生成 'protected' 属性,如何生成私有(private)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20117774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com