gpt4 book ai didi

java - ModelClass.class.getDeclaredFields().length 在 Gradle Build 期间返回 4 但有 3 个声明的属性

转载 作者:行者123 更新时间:2023-12-03 06:25:26 26 4
gpt4 key购买 nike

我有以下 POJO 类:

public class ModelClass {

private String name;
private String phone;
private String marks;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String getMarks() {
return marks;
}

public void setMarks(String marks) {
this.marks = marks;
}
}

我有一个测试方法,要求在运行时获取模型类中声明的属性总数并验证它。以下是我的测试类中的代码片段:
@Test
public void demoTest() {
int fields = ModelClass.class.getDeclaredFields().length;
assertEquals(CUSTOM_EXCEPTION_MESSAGE, fields, 3);
}

当我将它作为 Junit 测试运行时,该测试在 Eclipse 中运行良好。但是在构建过程中它失败了:

java.lang.AssertionError:expected:<4> but was:<3>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:118)



显然,在 Gradle 构建期间,字段的值是 4,但应该是 3。

这是一个 Gradle 项目。任何人都可以对这种不寻常的行为有所了解吗?

最佳答案

getDeclaredFields()方法返回一个字段对象数组。所以,getDeclaredFields().length应该返回 length of the array .无论您的 assertEquals条件包括比较 3 个单位,并且该方法的长度为 0(默认)到 3(在 ModelClass 中声明的三个方法)= 4 ( n.b。如果类或接口(interface)声明,此方法返回长度为 0 的数组没有字段,或者如果此 Class 对象表示原始类型、数组类或 void ,则基本上它返回构造函数的值)。

在这里,我测试了您的代码并分享了返回值,这可能有助于您更好地理解:

Served from mid night eclipse :-)

关于java - ModelClass.class.getDeclaredFields().length 在 Gradle Build 期间返回 4 但有 3 个声明的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46306579/

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