2016-06-22 1 views
3

Je veux rendre immutables mon objet DTO. Pour cela, je veux utiliser http://immutables.github.io/.Comment utiliser la bibliothèque immuable avec l'interface <T>

J'ai la hiérarchie suivante de l'héritage:

public interface Interface1 extends Serializable{ 
    public void method1(); 
} 

public interface Interface2<T> extends Interface1{ 
    public void method2(); 
} 

public class Implementation1<T> implements Interface2<T>{ 
    public void method1(){ } 

    public void method2(){ 
     return null; 
    } 
} 

Pour garder la compatibilité ascendante, je veux imeplements une nouvelle interface et la mise en œuvre comme indiqué ci-dessous:

@Value.Immutable 
public Interface3<T> extends Interface2<T>{ 
    public void method3(); 
} 

Cela devrait générer la classe ImmutableInterface3 pour être capable d'obtenir un constructeur et de pouvoir construire l'implémentation de la classe.

Le problème est que je ne peux pas utiliser la déclaration suivante:

Interface3<Object> immutableImplementationOfInterface3 = ImmutableInterface3<Object>.builder().build(); 

Y at-il un problème dans cette solution?

+0

Pourquoi ne pouvez-vous utiliser cette déclaration? Est-ce que la classe n'existe pas? La méthode n'existe-t-elle pas? – ipsi

+0

Je viens de poster la solution. Merci de votre aide. –

Répondre

2

La solution est:

Interface3<Object> immutableImplementationOfInterface3 = ImmutableInterface3.<Object> builder().build();