3
我已經使用Groovy Extension Module將compareTo
方法添加到byte[]
類。但是,我還想將Comparable
接口添加到同一個類,但無法弄清楚如何去做。如何動態地將接口添加到Groovy中的現有Java類中
我猜測它可能實現使用AST轉換。或者也許有一個更簡單的方法?也許通過操縱expando meta class?
我已經使用Groovy Extension Module將compareTo
方法添加到byte[]
類。但是,我還想將Comparable
接口添加到同一個類,但無法弄清楚如何去做。如何動態地將接口添加到Groovy中的現有Java類中
我猜測它可能實現使用AST轉換。或者也許有一個更簡單的方法?也許通過操縱expando meta class?
你不能這樣做,通過AST變換。 AST變換隻適用於Groovy類,當byte[]
是JDK之一時。
Metaclass允許您將自己的方法和屬性添加到類中,但不能更改java內部instanceof
行爲。因此,您不能將接口添加到JDK核心類,以便在Java庫中使用。
也許你應該考慮使用包裝類,實現Comparable
。
是的,當然你是對的。所以AST轉換不是一個解決方案。這不是一個真正的大問題,正如你所建議的那樣,有簡單的解決方法。只是覺得有可能以某種方式實現這一點......感謝您的回答。 – Steinar
如果您決定使用包裝,請檢查@Delegate註釋。 – topr
@topr你通知我了。也許最好使用'@ Steinar'來通知提問者? ;) – Seagull