MVEL嵌套属性解析问题

发布于 2024-11-25 04:37:54 字数 742 浏览 1 评论 0原文

我有以下类

private static class Person{
    private int iq;  
    private Person[] minions;

    public int getIq() {
        return iq;
    }
    public Person[] getMinions() {
        return minions;
    } 
}

我正在针对此代码尝试以下 MVEL (1.3.16-java1.6) 表达式

count = 0;
foreach (minion : minions){ 
    if (minions[count].iq > 120) { 
        return true;
    } 
}
return false;

但是 MVEL 似乎对 minions[count].iq 有问题(甚至minions[0].iq) 构造。

任何意见将不胜感激。编译器确切的抱怨是

Caused by: java.lang.IllegalAccessException: Class org.mvel.optimizers.impl.asm.ASMAccessorOptimizer can not access a member of class Person with modifiers "public"

I have the following class

private static class Person{
    private int iq;  
    private Person[] minions;

    public int getIq() {
        return iq;
    }
    public Person[] getMinions() {
        return minions;
    } 
}

I'm trying out the following MVEL (1.3.16-java1.6) expression against this code

count = 0;
foreach (minion : minions){ 
    if (minions[count].iq > 120) { 
        return true;
    } 
}
return false;

However MVEL seems to have problems with the minions[count].iq (or even minions[0].iq) construct.

Any inputs would be appreciated. The compilers exact grouse is

Caused by: java.lang.IllegalAccessException: Class org.mvel.optimizers.impl.asm.ASMAccessorOptimizer can not access a member of class Person with modifiers "public"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沙与沫 2024-12-02 04:37:54

您的 Person 类是私有的,因此我假设它对 ASMAccessorOptimizer 不可见,或者如果可见,ASMAccessorOptimizer 将无权访问它。

Person 声明为 public 应该可以解决这个问题。

Your Person class is private, thus I assume it would not be visible to ASMAccessorOptimizer or if it would, ASMAccessorOptimizer would not have the rights to access it.

Declaring Person public should solve that issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文