Это будет означать, начиная с всего нового JVM только, чтобы позвонить методу. Если вы уже «внутри» класса A; что мешает вам напрямую вызвать doSomething()? Вероятно: только отсутствие навыков. Если да, то работайте над своими навыками; и не ходите на следующее лучшее решение, о котором вы слышали, кто-то упоминает, как это можно сделать!
В сущности: само-утверждал выродок должны всегда понять каждый и любой концепции он использует в своих программах. Если вы хотите использовать отражение, изучите, что отражение есть.
И обратите внимание: позволяя пользователям перейти в произвольных строк, что они выполняются, это огромный безопасности NO GO. Вы должны были упомянуть в своем вопросе, что вы хотите сделать это нарочно; и что вы полностью осознаете возможные последствия этого!
EDIT; учитывая ваши последние комментарии.
В этом случае решение может быть столь же просто, как:
A) вы пишете новый класс, как
public class Invoker {
public static void main(String[] args) {
A.doSomething();
или если йоЗотеЬЫпд не статична, то вам нужно
A someA = new A(... however you can create instances of A
A.doSomething()
B) обобщать, что, а затем вы можете просто послать команду как
java -cp WHATEVER Invoker
в ваше существующее приложение. Конечно, вам нужно разобраться в деталях; например, предоставление допустимого пути к этому вызову java (этот путь к классам должен содержать местоположение, в котором находится Invoker.class, и, конечно, A.class и все зависимости, которые имеет A).
Но имейте в виду: doSomething() выполняется в рамках другой JVM. Это означает, что, скорее всего, это будет совсем нет влияет на класс A в этой JVM, где вы вызываете вызов exec!
Classic XY проблема. Вы хотите сделать X, но вы спрашиваете о Y. Забудьте о 'Runtime.exec()' его части и сосредоточьтесь на * проблеме. * – EJP
все, что я хочу сделать, это вызвать doSomething() во время выполнения и это ** необходимо **, чтобы сделать это без внесения каких-либо изменений в существующий код. Единственное, что может быть изменено, это параметр myString, поскольку он представляет собой предоставленное пользователем значение, переданное программе во время выполнения. – qre0ct
Вы не можете вызвать определенный метод извне, не написав код. Примечание: даже если вы вызываете метод, это не будет передавать объект JVM для использования в качестве состояния/контекста. Это просто вызов статического метода или вызов нового сконструированного экземпляра. –