将字符串内容转换为当前类的代码?

3

我知道已经有很多问题关于将字符串转换为可运行的代码,但我的问题有点不同。假设您有一个类,其中有一个名为:public boolean isSame(boolean a, boolean b) 的方法,以及一个包含以下内容的字符串:"if(a == b) { return true; } return false"。是否有一种方法可以将字符串的内容添加到方法的代码中?因此最终结果将是:

public boolean isSame(boolean a, boolean b){
    if(a == b){
        return true;
    }
    return false;
}
非常感谢。 编辑:如果这不可能,我完全理解,但值得一提 :)。

@JanDvorak 我对javac和编写自定义ClassLoader都有一定的了解,但是我只在很久以前做过一两次。 @tieTYT 我想在try-catch语句中调用该方法。 - Matthew S.
2
另请参阅http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html; 这可能是您正在寻找的内容(将字符串传递给它,它将输出一个类文件,然后您可以进行类加载)。 - John Dvorak
@JanDvorak 但是字符串不需要包含整个类,而不仅仅是方法的“内部”吗?此外,请原谅这个“愚蠢的问题”,但在加载类之后,您可以使用已加载的类的所有方法,对吗? - Matthew S.
@RandomAwesomeGuy 无论你编译什么,它都必须是一个类。此外,它应该实现一个包含你将调用的方法(并且在编译时可用)的接口。 - John Dvorak
基本结构:"public class $1 implements Callable<Boolean>{ @override public Boolean call(){"+guts+"}}" => 编译器 => 类加载器 => if(test.call()){...` - John Dvorak
显示剩余5条评论
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1
也许你可以使用BECL库——这是一个字节码工程库,虽然不以性能著称,但以易用性著称。 它在你的情况下很有趣的一点是:与其他提供字节码抽象的工程库不同,它通过反编译类、编织所需代码,然后重新编译它来工作。. . . 这发生在类加载阶段。. . 理论上,这将允许您在原始方法调用之前或之后以字符串格式插入有效代码。 本质上,按照问题评论部分的建议使用编译器,但为您多做了一些额外的工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,