当前位置: 首页 > 知识库问答 >
问题:

JavaParser:从字段声明中获取字段名称

冉锋
2023-03-14

我已经建立了一个字段声明列表,需要找出每个字段的名称:

List<FieldDeclaration> fields = classDeclaration.getFields();

for (FieldDeclaration field : fields)
{
    String fieldName = field.get...?
}

我找不到任何检索字段名称的方法。

奇怪的是,其中一个构造函数确实接受一个字段参数,所以不确定为什么它没有getter。我需要从另一个节点获取它吗?

FieldDeclaration(节点列表修饰符、类型、字符串名称)创建一个FieldDeclaration。https://www.javadoc.io/doc/com.github.javaparser/javaparser-core/3.15.1

共有1个答案

卓星波
2023-03-14

您提到的构造函数声明为

public FieldDeclaration(NodeList<Modifier> modifiers, Type type, String name) {
    this(assertNotNull(modifiers), new VariableDeclarator(type, assertNotNull(name)));
}

FieldDeclaration的源代码中,有一个VariableDeclarators的节点列表,如下所示:;

@NonEmptyProperty
private NodeList<VariableDeclarator> variables;

你可以通过以下方法获得这个私有列表:;

public NodeList<VariableDeclarator> getVariables() {
    return variables;
}

获得列表后,您应该使用VariableDeclarator类方法,如果您查看它的源代码,该方法应该可以工作;

@Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
public SimpleName getName() {
    return name;
}

编辑

你可以在这里访问源代码

 类似资料:
  • 在java8中,可以访问java类的字段。朗。反思。使用例如。 在java12(从java9开始?)这只返回一个空数组。这不会改变,即使 设置。 有什么办法可以做到这一点吗?(显然,这可能不是一个好主意,我希望在junit测试期间通过反射更改代码中的“static final”字段 )

  • 问题内容: 在Java中能否从实际字段中获取字符串中的字段名称?喜欢: PS:我 不是 在寻找字段的类/类名,也不是从String中的名称获取Field。 编辑:当我查看它时,我可能不需要一种获取字段名称的方法,该Field实例(来自字段的“代码名称”)就足够了。[例如] Java本身可能没有想要的东西。我将看一下ASM库,但最后我可能最终会使用字符串作为字段的标识符:/ EDIT2:我的英语不好

  • 我使用的是ApacheJMeter5.3。我有一个HTTP请求,它返回JSON响应,如下所示: 有没有办法使用JSON提取器从“certificates”对象(本例中为4b89aa6c131)中提取第一个字段名?

  • 问题内容: 在没有泛型类型的类中,我想声明一个类似于以下内容的相当复杂的泛型字段: 问题是Java编译器不会让我:) 所以我的问题是如何正确地引入T和S,而又不向类Client添加类型。 我的目标是强制成为您选择的类的子类型和作为子类。 问题答案: 你不能 唯一的选择是在类声明中声明泛型类型参数。如果您的类没有泛型类型参数,则其成员不能为泛型。您必须在类成员的声明中使用实际类型。

  • 本文向大家介绍Django获取model中的字段名和字段的verbose_name方式,包括了Django获取model中的字段名和字段的verbose_name方式的使用技巧和注意事项,需要的朋友参考一下 定义模型: 获取字段名和verbose_name: 注:appname是model所在app的名字,modelname是model的名字 如果在view中执行get_model.filed('

  • 问题内容: 我正在做大学项目。 我需要从课堂上获取所有字段。甚至是私有的并继承的。我试图获取所有声明的字段,然后转换为超类并重复。我的代码片段: 但这行不通。强制转换后仍然是同一类(不是超类)。 我将感谢您提供任何有关如何解决铸造问题或如何以其他方式检索这些字段的帮助。 问题不是要访问字段,而是要获取字段名称! 我以这种方式进行管理: 问题答案: obj = obj.getClass().getS