Использование readMethod () для вызова свойства объекта в Java? - PullRequest
3 голосов
/ 31 августа 2010

Привет, ребята, у меня проблема с вызовом свойства объекта (например, JButton) с использованием readMethod () класса отражения, какие-либо идеи высоко ценятся?вот код:

 private void PropertySelectedFromList(java.awt.event.ActionEvent evt) {                                          
        // add code here
        String propertyName = (String)PropertyList.getSelectedItem();
        PropertyType.setEnabled(true);     
        PropertyType.setText("Text" + propertyName);
        PropertyValue.setEnabled(true);
        PropertyDescriptor dpv = PropValue(props, propertyName);
        Method readMethod = dpv.getReadMethod();
        if(readMethod != null){
            String obtName = (String) ObjectList.getSelectedItem();
            Object ob = FindObject(hm, obtName);// retrieving object from hashmap 
            aTextField.setText(readMethod.invoke(ob, ???));<----------here is the problem
        }
        else{
            PropertyValue.setText("???");
        }
        Method writeMethod = dpv.getWriteMethod();
        if(writeMethod != null){
            System.out.println(writeMethod);
        }
        else{
            System.out.println("Wrong");
        }

    }           

1 Ответ

0 голосов
/ 31 августа 2010

Сделайте это так -

aTextField.setText((readMethod.invoke(ob, null)).toString());

Второй аргумент Invoke - это параметр, который вы хотите передать вызываемому методу.В вашем случае, предполагая, что это метод чтения и не требует параметра, этот аргумент должен быть установлен в null.

. toString() требуется, так как setText ожидает строку.Если тип возвращаемого метода, который вы вызываете, равен String, то вы можете напрямую типизировать возвращаемое значение к String вместо вызова toString

Редактировать: как указано @Thilo, поскольку java5 invokeподдерживает переменное количество аргументов, вы можете просто пропустить второй аргумент.

aTextField.setText((readMethod.invoke(ob)).toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...