{"action":"created","issue":{"url":"https://api.github.com/repos/rzwitserloot/lombok/issues/1176","repository_url":"https://api.github.com/repos/rzwitserloot/lombok","labels_url":"https://api.github.com/repos/rzwitserloot/lombok/issues/1176/labels{/name}","comments_url":"https://api.github.com/repos/rzwitserloot/lombok/issues/1176/comments","events_url":"https://api.github.com/repos/rzwitserloot/lombok/issues/1176/events","html_url":"https://github.com/rzwitserloot/lombok/issues/1176","id":171966618,"number":1176,"title":"Feature request: please make @Delegate non-experimental","user":{"login":"arnonmoscona","id":17976,"avatar_url":"https://avatars.githubusercontent.com/u/17976?v=3","gravatar_id":"","url":"https://api.github.com/users/arnonmoscona","html_url":"https://github.com/arnonmoscona","followers_url":"https://api.github.com/users/arnonmoscona/followers","following_url":"https://api.github.com/users/arnonmoscona/following{/other_user}","gists_url":"https://api.github.com/users/arnonmoscona/gists{/gist_id}","starred_url":"https://api.github.com/users/arnonmoscona/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arnonmoscona/subscriptions","organizations_url":"https://api.github.com/users/arnonmoscona/orgs","repos_url":"https://api.github.com/users/arnonmoscona/repos","events_url":"https://api.github.com/users/arnonmoscona/events{/privacy}","received_events_url":"https://api.github.com/users/arnonmoscona/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-08-18T18:18:56Z","updated_at":"2016-12-19T16:09:29Z","closed_at":null,"body":"`@Delegate` was experimental for a long time, and the Lombok page actually slates it for deprecation, partly on the rationale that it is not commonly used. The delegate pattern is very mainstream, and associated concepts like mixins and traits are increasingly becomeing integral to programmin languages. Scala, Kotlin, Groovy, are just a few examples. It is an indespensible annotation if you want to use composition frequently (for instance if you want to to a lot of COP/DCI style coding)\n\nPeople cannot use `@Delegate` in any situation where you want confidence that it won't be removed. So \"not many using it\" is a self fulfilling prophecy.\n\nIf the implementation team feels that some of the functionality of the existing `@Delegate` annotation is unsafe or cannot be made stable, then maybe you can create another annotation that only includes the safe/stable parts. You might call it `@Mixin`, `@DelegateTo` or some such name that would preserve compatibility for existing code that uses `@Delegate` \n"},"comment":{"url":"https://api.github.com/repos/rzwitserloot/lombok/issues/comments/268003962","html_url":"https://github.com/rzwitserloot/lombok/issues/1176#issuecomment-268003962","issue_url":"https://api.github.com/repos/rzwitserloot/lombok/issues/1176","id":268003962,"user":{"login":"spifd","id":1442841,"avatar_url":"https://avatars.githubusercontent.com/u/1442841?v=3","gravatar_id":"","url":"https://api.github.com/users/spifd","html_url":"https://github.com/spifd","followers_url":"https://api.github.com/users/spifd/followers","following_url":"https://api.github.com/users/spifd/following{/other_user}","gists_url":"https://api.github.com/users/spifd/gists{/gist_id}","starred_url":"https://api.github.com/users/spifd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spifd/subscriptions","organizations_url":"https://api.github.com/users/spifd/orgs","repos_url":"https://api.github.com/users/spifd/repos","events_url":"https://api.github.com/users/spifd/events{/privacy}","received_events_url":"https://api.github.com/users/spifd/received_events","type":"User","site_admin":false},"created_at":"2016-12-19T16:09:29Z","updated_at":"2016-12-19T16:09:29Z","body":"+1\r\n\r\nI've recently used it with the popular Visitor pattern (https://en.wikipedia.org/wiki/Visitor_pattern) so that a Visitor can be easily composed of multiple sub-Visitor delegate implementations. This is very convenient to avoid writing tons of annoying visit delegation code and it does the job well for my \"simple\" use case.\r\n"}}
{"actor":{"display_login":"spifd"}}