如果您的bean使用getFoo
方法,那么当您要求getFoo
的值时,您使用的框架如何知道如何调用foo
方法?这是使用反射API完成的吗?或者它是否以某种方式使用注释完成?显然我知道如何在给定属性名称的情况下派生方法,我只是不知道如何调用该方法。
答案 0 :(得分:1)
Java通过方法名称约定使用“属性”。对于camelCase
类型的媒体T
,您应该定义public T getCamelCase()
和public void setCamelCase(T t)
中的一个或两个。您可以使用以下代码测试bean的属性:
Introspector.getBeanInfo (bean.getClass ()).getPropertyDescriptors ();
请注意,因为属性不是第一类对象并且依赖于命名约定,所以很容易意外地破坏这种伪对象。例如。如果您定义setFoo(int)
和setFoo(int, boolean)
,则您的班级中不会有属性foo
。
答案 1 :(得分:0)
实际的方法调用确实是通过反射完成的。例如,您可以查看BeanUtil和更多特定MethodUtil来源。要反射调用方法,请使用
method.invoke( bean, parameters );
有关示例,请参阅reflection tutorial。