SpEL - 从 Object[] 获取值

SpEL - get value from Object[]

我正在尝试编写一个可以搜索 Object[] 数组的 SpEL 表达式。下面是一些示例代码:

public class Foo {
    private String foo;
    public Foo(String foo) {
        this.foo = foo;
    }
    private String getFoo() {
        return foo;
    }
}

public class Bar {
    private String bar;
    public Bar(String bar) {
        this.bar = bar;
    }
    private String getBar() {
        return bar;
    }
}

    public static void main(String args) {
        Object arr[] = {new Foo("foo1"), new Bar("bar1")};
        ExpressionParser expressionParser = new SpelExpressionParser();
        Expression expression = expressionParser.parseExpression("someExpression to search for bar");
        Object expressionResult = expression.getValue(arr, Object.class);
    }

谁能帮我写一个 SpEL 来搜索 arr 并找到第一个具有 属性 "bar" 和 return bar 值的对象?

这个的实际应用是我正在为一个方面写一个注释,我试图在注释中声明一个参数的路径:

@MyAnnotation(spelPath="someExpression to search for bar")
public void myMethod(Foo foo, Bar bar, more arguments)

非常感谢您的帮助!

SpEL 对反射有合理的限制。我建议编写一些 static 实用方法并使用类型运算符从 SpEL 调用它:

@MyAnnotation(spelPath="T(com.my.proj.MyUtils).searchBar(#root)")