2013-08-15 2 views
1

Я хочу сделать что-то вроде этого:Как получить java.lang.reflect.Field, когда у вас есть ссылка на myBean.getId()

public myMethod(Object expectedValue) { 
    java.lang.reflect.Method method = new Method(expectedValue); 
    System.out.println(method.getName()); 
} 

Как получить ссылку метод от самого добытчика без ввод строки связи (с указанием имени геттера)?

+1

Я не понимаю вопроса. Что именно «ожидается?»? Что это означает? И вы ничего не говорите о 'myBean.getId()', кроме как в заголовке. Пожалуйста, уточните свой вопрос немного больше, возможно, с классом образцов и требуемым выходом. –

+0

@RohitJain expectedValue - это объект, как показано в коде. myBean.getId() - это значение, переданное обведенному методу. – NimChimpsky

+0

@NimChimpsky Вы говорите, что это называется: myMethod (myBean.getId()); 'и вы хотите, чтобы внутри myMethod получить ссылку' Method' на 'myBean.getId()'. Это верно ? (Если это так, то нет, вы не можете сделать это в Java, возвращаемое значение myBean.getId() передается в myMethod, и больше нет связи с тем, откуда пришел этот возвращенный объект) – nos

ответ

1

Не знаю, правильно ли я понял ваш вопрос, но ниже вы найдете код, который вы можете вызвать геттер из объекта с использованием отражения. Afaik, нет способа получить метод, не ссылаясь на его имя.

public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { 

    Foo foo = new Foo(); 
    foo.setBla("i am bla"); 

    Method blaGetter = Foo.class.getMethod("getBla"); 
    System.err.println(blaGetter.invoke(foo)); 

} 

private static class Foo { 

    private String bla; 

    public String getBla() { 
     return bla; 
    } 

    public void setBla(String bla) { 
     this.bla = bla; 
    } 
} 
Смежные вопросы