gpt4 book ai didi

java - isAccessible() 为公共(public) setter 返回 false

转载 作者:行者123 更新时间:2023-11-29 05:24:11 25 4
gpt4 key购买 nike

我正在使用 PODAM用一些 JUnit 测试用例中的一些测试数据填充我的对象。我遇到了一个我无法理解的错误。

PODAM 在制造我的对象时报告了这行日志记录:

The setter: setId is not accessible.Setting it to accessible. However this is a security hack and your code should really adhere to Javabean standards.

我的每一个 setter 在尝试填充对象时都会收到此警告。在这种情况下,setId() 包含以下内容:

public void setId( int id )
{
this.id = id;
}

有谁知道为什么会标记此错误,因为该方法是公开的,为什么它会被标记为“不可访问”。

我查看了 PODAM 源代码,它正在检查方法是否可访问,每次返回 false 时,PODAM 都会在调用之前将方法设置为可访问:

if (!setter.isAccessible()) {
LOG.warn("The setter: {} is not accessible.Setting it to accessible. "
+ "However this is a security hack and your code should really adhere to Javabean standards.",
setter.getName());
setter.setAccessible(true);
}
setter.invoke(retValue, setterArg);

PODAM 实际上运行良好,并根据需要用随机数据填充所有字段。我很好奇为什么我每次都会收到此错误,以及代码中是否存在导致它不符合标准的问题。

最佳答案

isAccessible() returning false for public setters

是的。它应该做的。根据the javadocs , accessible 标志确定当您尝试通过 Method 对象调用方法时,Method 对象是否忽略正常的 Java 访问规则.根据 javadoc,该标志默认为 false ... 意思是“应用 Java 访问规则”。

但是。您发布的代码片段似乎将 accessible 标志误解为表示可以调用该方法。那是不正确的……最终结果是虚假警告。

这看起来像是 PODAM 中的错误,我建议您向 PODAM 库的维护者提出问题。

关于java - isAccessible() 为公共(public) setter 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23361320/

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