题
我想实现一个具有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();
不隶属于 StackOverflow