Я знаю, как вызвать метод путем отражения, он создает новый экземпляр. Но я не могу этого сделать. Поскольку мой класс импортировал интерфейс Runnable, я должен запустить метод запуска в новом потоке. Поэтому это нежелательно. Мой код теперь:Как вызвать нестатический метод путем отражения без создания нового экземпляра в том же классе?
public class Validation() impelements Runnable {
Validation (String[] methodName) {
if(methodName[2].equals("deposit")){
this.deposit(account);
}
else if (methodName[2].equals("withdraw")){
this.withdraw(account);
}
// lots of if-else
}
//..... other methods , deposit() , withdraw() , run();
}
мне нужно что-то вроде этого (без создания нового экземпляра класса, но это должно быть отражение):
UPDATE:
если-то другой должен заменить с чем-то вроде этого:
try {
this.invoke(methodName[2] , account);
} catch (Exceotion ex){
// something
}
Я не могу использовать статический депозит или ш ithdraw, они используют нестатические переменные.
В PHP мы simething так:
$methodName = $array[2] ;
$this.methodName();
Мой вопрос:
Как вызвать нестатический метод путем отражения без создания нового экземпляра в то же класс?
Вы не можете. Это невозможно. Вам нужен экземпляр для вызова методов экземпляра. – Savior
Вы не можете этого сделать. Подумайте об этом - как вы можете вызвать метод объекта (который может изменить его состояние) без объекта? –
Вы спрашиваете, как вызвать метод путем отражения объекта _existing_? –