经典使用:本例经常用
匿名内部类使用:等于传入一个函数指针,执行一个callback.将子函数中的result,传回给class的成员变量
private List<ConfigData> setConfigValues(...) {
handler.apply(new SetAttrAssistant() {//传入匿名对象
//类成员函数
public boolean setConfigData(Collection<ConfigData> items) {
//匿名类,使用外部类的成员变量configDataList保存数据,而items正是子函数计算的result
configDataList.addAll(items);
}
});
}
public void apply(SetAttrAssistant assistant) {
if (assistant != null) {
List<ConfigData> tupleOfData = Lists.newArrayList();
for (Map.Entry<String, String> config : profile.entrySet()) {
ConfigData data = convertConfigData(config.getKey(), config.getValue());
tupleOfData.add(data);
}
assistant.setConfigData(tupleOfData);//执行匿名对象的setConfigData函数。
}
}