我尝试使用javabeans反射来获取该属性名称的属性的set / get值。
当我尝试编译此代码时
class TestReflection
{
public TestReflection()
{
}
private Integer field;
public Integer getField()
{
return this.field;
}
public void setField(Integer x)
{
this.field = x;
}
}
// .
// .
// .
TestReflection ref = new TestReflection();
Object value = new PropertyDescriptor("field",
ref.class).getReadMethod().invoke(ref); // ERROR
我收到了这个错误:
Test.java:84: error: cannot find symbol
ref.class).getReadMethod().invoke(ref);
symbol: class ref
如何修复该错误?
答案 0 :(得分:0)
将ref.class
替换为ref.getClass()
:
new PropertyDescriptor("field", ref.getClass())
类文字.class
仅适用于类型,而不是该类型的变量,即:
new PropertyDescriptor("field", TestReflection.class)
请注意,这就是编译器抛出cannot find symbol
错误的原因:当遇到X.class
时,它会尝试搜索名为X
的类或类型。
答案 1 :(得分:0)
使用ref.getClass()方法而不是ref.class。