2015-04-06 2 views
0

Я пытаюсь использовать отражение javabeans для set/get value свойства по имени этого свойства.Ошибка 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.class с ref.getClass():

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

Класс буквальным .class доступен только на типе, а не переменной этого типа, а именно:

new PropertyDescriptor("field", TestReflection.class) 

Следует отметить, что именно поэтому компилятор бросает ошибку cannot find symbol: когда он встречает X.class, он пытается выполнить поиск класса или типа с именем X.

0

использовать метод ref.getClass() вместо ref.class.

Смежные вопросы