我想在锡兰/为锡兰编写一个 RMI 库(因为到目前为止我还没有找到)。
我需要的第一件事是代理。在Java中,我使用了类似的东西
Proxy.newProxyInstance(classLoader, interfaces, handler);
1.锡兰有类似的东西吗?(还没有找到东西)
尝试自己编写类似的东西时,我遇到了这个使用字节码操作的 JVM 解决方案。漂亮,正是我想要的。
请注意,这甚至可以为一个类生成一个代理,而不仅仅是 Java 中的接口。在锡兰这应该是合法的,因为没有字段,我们可以用方法调用模拟整个类。
2.如果为类创建代理是不行的,请告诉我。另外,关于代理的锡兰直觉/未来是什么?应该有(没有)代理吗?
在代理的未来,我们有一个主要问题:
在锡兰我们有default
关键字,没有它,方法就不能被提炼/覆盖。这也会产生final
用于编译的 Java 输出类的方法。因此(甚至不是)字节码操作可以覆盖那些并将它们重定向到调用处理程序/拦截器。
3.我们如何处理这个问题?
我假设根本没有?我完全明白不允许优化方法和default
/final
关键字的想法,但这会阻碍类的 RMI/代理。
4.类的代理是个坏主意吗?
是的,我目前正在考虑和调查的问题还有很多:JS 实现、接口和默认方法等
这些点似乎是目前最相关的,所以让我们从这里开始。