2015-04-06 15 views
0

我嘗試通過該屬性的名稱使用javabeans反射設置/獲取屬性值。JAVABEANS錯誤找不到符號

當我嘗試編譯此代碼

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

ref.getClass()更換ref.class

new PropertyDescriptor("field", ref.getClass()) 

類字面.class僅適用於類型,該類型的不是一個變量,即:

new PropertyDescriptor("field", TestReflection.class) 

注意,這是爲什麼編譯器拋出一個cannot find symbol錯誤:當它遇到X.class時,它將嘗試搜索名爲X的類或類型。

0

使用ref.getClass()方法代替ref.class。