【问题标题】:Storing a method inside a String and executing the method将方法存储在 String 中并执行该方法
【发布时间】:2015-04-06 05:58:33
【问题描述】:

我将一个完整的方法存储在一个字符串中(实际上是从一个文件中读取它作为一个字符串)。现在我需要执行字符串中的方法。我的意思是,在 MainActivity 中,我必须在 String 中执行此方法。有什么办法吗?

提前致谢。

String中存储的方法是:

public void showTheText()
{
    System.out.println("Hi There...");
}

【问题讨论】:

  • 你想要什么?在txt文件中记录方法?
  • 我有一个text file,它具有上述方法。我正在将它读给MainActivity 中的String。所以我有一个String object,它完全掌握了这个方法。现在我需要在MainActivity 中执行这个字符串(String 中的方法)。
  • 不可能做到这一点
  • 在 JavaScript 中,我们可以引用这样的字符串并在需要时执行它。但在 Android 中,我不知道该怎么做。有什么解决方法吗?
  • 我不知道你想要实现什么,但在 android 中你可以从 java 代码运行 shell 命令。试试看这个link

标签: android string methods runtime


【解决方案1】:
  • 在执行此操作之前,如果您尝试动态执行代码,请记住 Google Play 上的人可能不喜欢它,因为它可用于远程执行代码或未分析的代码由他们。

  • 话虽如此,在 java 中没有正确的方法来评估字符串中的表达式。但是你总是可以嵌入一些解​​释器并让它执行代码(即https://code.google.com/p/android-scripting/wiki/FAQ)。

  • 如果您的方法存在于应用程序的某个类中,您只需要您要执行的方法的名称,然后使用反射来调用它。

【讨论】:

  • @Logain 那篇文章建议我使用解释器。你对 Beanshell for Android 有什么想法吗?
  • 我们可以在这里使用反射吗?
  • 是的,反射可以像在任何其他 java
  • 我实际上可以用反射做什么?我的意思是为了我的目的。我可以使用 Reflection 执行存储为 String 对象的方法吗?
  • 不,你能做的非常有限。例如,给定一个类的名称和一个方法的名称(在字符串中),您可以执行该方法,但它必须已经在一个类中才能执行此操作。我能问一下为什么你需要做这一切吗?也许有更好的方法,核心问题是另一个。
猜你喜欢
  • 1970-01-01
  • 2019-06-10
  • 2016-08-27
  • 2017-08-04
  • 1970-01-01
  • 2017-02-21
  • 2016-03-22
  • 2018-06-01
  • 1970-01-01
相关资源
最近更新 更多