2017-07-29 59 views
0

我想在/爲錫蘭編寫一個RMI庫(因爲我還沒有找到一個)。錫蘭RMI/Proxy和非默認方法的關係

我需要的第一件事就是代理。在java中我用類似

Proxy.newProxyInstance(classLoader, interfaces, handler); 

有什麼等同於錫蘭? (還沒有找到的東西)


嘗試寫這樣的事情我自己,我碰到這個solution for the jvm使用字節碼操作。 漂亮,正是我想要的。 請注意,這甚至可以爲類生成代理,而不僅僅是像java中的接口。在錫蘭,這應該是合法的,因爲沒有字段,我們可以用方法調用模擬整個類。

2.如果創建類的代理服務器是不行的,請告訴我。 另外,代理的錫蘭直覺/未來是什麼?會有(沒有)代理嗎?


與代理以後,我們有一個大問題:

在錫蘭我們有default關鍵字,沒有它的方法無法琢磨/覆蓋。這也導致編譯的java輸出類的final方法。因此(甚至不)字節碼操作可以覆蓋那些並將它們重定向到調用處理程序/攔截器。

3.我們該如何處理?


我假設沒有?我完全想到禁止改進方法和default/final關鍵字,但是這阻礙了類的RMI /代理。

4.代理的類是一個壞主意嗎?


是的,有這麼多問題,我目前思考和研究上:JS實現,接口和默認方法等

這點似乎是最相關的那一刻,所以讓我們從這裏開始。

回答

0

在進一步的研究,我發現:

代理是目前錫蘭1.4里程碑(關於代理的問題)的一部分。

3.爲錫蘭編譯器啓用EE模式,刪除final關鍵字。

從這個解決方案的角度來看,我發現它的工作原理與Gavin提供的完全一樣。