From 045bc9a60d7d97985791ec80b8b423a49e5c1a7a Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Mon, 9 May 2011 22:05:43 +0200 Subject: Updated Delegate docs now that we've changed how it works (it no longer detects that you've implemented a few to-be delegated methods yourself). --- website/features/Delegate.html | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'website') diff --git a/website/features/Delegate.html b/website/features/Delegate.html index 52b1035d..99f8a559 100644 --- a/website/features/Delegate.html +++ b/website/features/Delegate.html @@ -20,12 +20,21 @@

Lombok delegates all public methods of the field's type, as well as those of its supertype except for all methods declared - in java.lang.Object. You can provide a specific implementation for a method by providing you own implementation, lombok will not - generate delegate methods for those already declared in the class. + in java.lang.Object.

- You can pass any number of classes into the @Delegate annotation. If you do that, then lombok will delegate all public - methods in those types (and their supertypes, except java.lang.Object) instead of looking at the field's type. + You can pass any number of classes into the @Delegate annotation's types parameter. + If you do that, then lombok will delegate all public methods in those types (and their supertypes, except + java.lang.Object) instead of looking at the field's type. +

+

+ All public non-Object methods that are part of the field's type (or, if you used types parameter, the methods of those types) are + copied, whether or not you also wrote implementations for those methods. That would thus result in duplicate method errors. You can avoid these + by using the @Delegate(excludes=SomeType.class) parameter to exclude all public methods in the excluded type(s), and their supertypes. +

+

+ To have very precise control over what is delegated and what isn't, write private inner interfaces with method signatures, then specify these + private inner interfaces as types in @Delegate(types=PrivateInnerInterfaceWithIncludesList.class, excludes=SameForExcludes.class).

@@ -43,12 +52,14 @@

Small print

- When passing classes to the annotation, these cannot contain generics. This is a limitation of java that lombok cannot work around. + When passing classes to the annotation's types or excludes parameter, you cannot include generics. + This is a limitation of java. Use private inner interfaces or classes that extend the intended type including the + generics parameter to work around this problem.

When passing classes to the annotation, these classes do not need to be supertypes of the field. See the example.

-