我想实现一个具有AdvancedTableFormat和WritableTableFormat接口的釉面列表。

我在这里阅读:http://www.jroller.com/aalmiray/entry/glazedlists_groovy_not_your_regular

对于一个界面,似乎在Groovy中使用“ AS”关键字:

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

是否有可能对两个接口进行此操作?如果是这样?

谢谢!

米莎

有帮助吗?

解决方案

您可以创建一个新界面,该界面扩展了您感兴趣的两个接口。

interface PersonalizedTableFormat extends AdvancedTableFormat, WriteableTableFormat {
}

您可以将对象投射到新界面。

return object as PersonalizedTableFormat;

其他提示

“ AS”关键字只是调用Groovy's的一种奇特方式 astype(班级) 方法,仅将单个类作为参数。因此,您不能直接使用一个以上的接口使用“ AS”(除非您采用FRM的方法并将接口组合在一个超级接口中)。

我想知道您是否要即时实现2个或更多接口,并且不喜欢“硬代码”喜欢
interface abc extends aaa,bbb,ccc {}?

可能是您可以尝试以下代码:

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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top