如何将代码块放入字符串中,并在开关(位置)中使用它



我的应用程序中有以下代码,用于定义当我在ListView中单击项目时会发生什么:

protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    switch (position) {
    }
}

我有一个名为data的字符串,其中包含一些情况:

String data = "case 0:nLog.i('switchcase','case0');nreturn;ncase 1:nLog.i('switchcase','case1');nreturn;ndefault:nreturn;"

我的应用程序接收来自互联网的数据并将其存储在字符串中。。。

我如何使用字符串中的代码,以便我的开关(位置)可以使用字符串的大小写?

这个问题有三个答案。

第一个是"否"。这就是病毒的起源。您不会运行从外部源代码注入的代码。Java是专门为防止这种恶作剧而设计的。

第二个答案是,您可以在代码中设置状态机。其中,您保留了一个非常大的switch语句,其中包含所有可能的case选项,这些选项可能都已编码到位。然后可以解析传入的数据字符串,以决定要设置和运行这些情况/状态中的哪一个。如果你有有限的选择,这不是什么大不了的事。但你提供的可能性越多,你的班级就越大,就越难维持。在我"程序化"编程的日子里,处理一个代码超过50000行的模块并不罕见。

最后一个答案是"反思"。反射是在对类一无所知的情况下检查和使用类内容的过程。Java将编译后的类从一个应用程序传递到另一个应用。只要类适合一个已知的接口,并且只要发送和接收类有一组匹配的安全密钥,那么接收类就应该能够运行给定的代码

以下是一个详细解释该主题的链接:http://tutorials.jenkov.com/java-reflection/index.html

当然,您可以在StackOverflow上搜索提示以及如何进行反射。

最新更新