Question

Je voudrais mettre en œuvre une liste baie vitrée qui a à la fois une interface AdvancedTableFormat et WritableTableFormat.

Je lis ici: http://www.jroller.com/aalmiray/entry/glazedlists_groovy_not_your_regular

et pour une interface, il semble que ce soit possible Groovy avec le mot-clé « comme »:

# return new EventTableModel(linksList, [  
#       getColumnCount: {columnNames.size()},  
#       getColumnName: {index -> columnNames[index]},  
#       getColumnValue: {object, index ->  
#          object."${columnNames[index].toLowerCase()}"  
#       }] as TableFormat)

Est-il possible d'une certaine manière de faire cela pour deux interfaces? Si oui, comment?

Merci!

Misha

Était-ce utile?

La solution

Vous pouvez créer une nouvelle interface qui étend les deux interfaces qui vous intéressent.

interface PersonalizedTableFormat extends AdvancedTableFormat, WriteableTableFormat {
}

Vous pouvez lancer l'objet que vous revenez à la nouvelle interface.

return object as PersonalizedTableFormat;

Autres conseils

Le mot-clé « comme » est juste une façon de fantaisie d'invoquer Groovy asType (classe) méthode , qui prend qu'une seule classe comme argument. Par conséquent, vous ne pouvez pas utiliser directement « comme » avec plus d'une interface (sauf si vous prenez l'approche de FRM et combiner les interfaces dans une interface super).

Je me demande si vous souhaitez implémenter 2 ou plusieurs interfaces à la volée, et ne préfère pas « code dur » comme
interface abc extends aaa,bbb,ccc {}?

Peut être vous pouvez essayer le code suivant:

import static java.util.Collections.sort
def doClose(Closeable c){
    c.close();
}
def o = new Object()
o.metaClass{
    compare{Object a,String b-> return a.size() - b.size()};
    close{println 'Lights out - I am closing'};
}
o = new ProxyGenerator().instantiateDelegate([Comparator, Closeable], o)
def items = ['a', 'bbb', 'cc']
sort(items, o);
println items;
doClose(o);
println o.class.getInterfaces();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top