Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以重写Random类的Java实现吗? 在C++中,我看到了蹦床函数调用是可能的,这样你就可以拦截Windows基础功能并返回自定义结果集,而不需要修改原来的函数调用。p>_Java_C++_Detours - Fatal编程技术网

可以重写Random类的Java实现吗? 在C++中,我看到了蹦床函数调用是可能的,这样你就可以拦截Windows基础功能并返回自定义结果集,而不需要修改原来的函数调用。p>

可以重写Random类的Java实现吗? 在C++中,我看到了蹦床函数调用是可能的,这样你就可以拦截Windows基础功能并返回自定义结果集,而不需要修改原来的函数调用。p>,java,c++,detours,Java,C++,Detours,我想知道是否有任何方法可以覆盖Java随机化调用,以便实现自己的结果集。在上一个问题中。作为一个可能的解决方案,在不混淆其他问题的情况下,我想知道是否有人有过实现“迂回式”解决方案的经验。如果您负责实例化java.util.Random对象,那么您可以将java.util.Random子类化,并实例化您自己的类。如果您不能更改的其他代码负责实例化,那么您显然不能使用自己的子类。我想这不是你的选择 另一种选择是在类加载时更改实现。基本上,您可以重写java.util.Random的字节码,以执行默

我想知道是否有任何方法可以覆盖Java随机化调用,以便实现自己的结果集。在上一个问题中。作为一个可能的解决方案,在不混淆其他问题的情况下,我想知道是否有人有过实现“迂回式”解决方案的经验。

如果您负责实例化java.util.Random对象,那么您可以将java.util.Random子类化,并实例化您自己的类。如果您不能更改的其他代码负责实例化,那么您显然不能使用自己的子类。我想这不是你的选择

另一种选择是在类加载时更改实现。基本上,您可以重写java.util.Random的字节码,以执行默认情况下不执行的操作。这样做的缺点是,它将影响java.util.Random的所有实例,而不仅仅是您可能想要更改的一个实例。再说一次,大多数代码都不依赖于RNG的实现细节,所以这可能不是问题

是一个相当不错的字节码库。它将允许您在类加载时重写字节码,因此您可以(例如)使用对自己的类的调用来替换生成随机数的方法体,该类实现您需要的RNG算法

您可以编写一个简单的类文件处理器,用于java.util.Random类。代码可能是这样的:

ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("Random"); // maybe java.util.Random
CtMethod m = cc.getDeclaredMethod("nextLong");
m.setBody("my.super.duper.RandomClass.nextLong()");
cc.writeFile();

你不能创建你自己的类吗?如果我是正确的:你不是在问你是否可以从类继承,而是重定向对它的调用,这样对Random.next()的调用将调用你的方法,而不是默认方法?如果是这样的话,不,没有办法做到这一点,也永远不会有;这将是一个巨大的安全漏洞…难道你不能只传递你自己的种子吗?BlueRaja,AOP处理器不允许你进行运行时字节编织来拦截你想要的任何类型的调用吗?