2011-07-21 86 views
0

我有下面的類MVEL嵌套屬性解析問題

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" 
+0

我不知道MVEl,但由於'Person'類是私人的'ASMAccessorOptimizer'可能實際上看不到'Person'或可能沒有訪問權限。 – Thomas

+0

@Thomas。接得好。 MVEL在像「iq <50」等表達式中沒有問題,儘管該類是私有的。這有點把我扔了。如果您可以添加答案,我會接受它 – qwerty

+0

添加評論作爲答案。 – Thomas

回答

1

Person類是私有的,因此,我認爲這將是不可見的ASMAccessorOptimizer或者是否會,ASMAccessorOptimizer就不會去訪問它的權利。

聲明Person公衆應該解決這個問題。