实际例子:
public abstract class MetadataProcessor {
protected void processMetadata() {
Map
for(String key : metadata.keySet()) {
if(metadata.get(key) instanceof Date) {
processDate(metadata.get(key));
} else { //String or any other object type
processString(metadata.get(key).toString());
}
}
private void processDate(Date date) {
(...)
}
private void processString(String string) {
(...)
}
/**
* contains document's metadata, values must be String or Date
**/
protected abstract Map
}
如果 String 的 .toString() 不会返回 String 本身,则if(foo instanceof String)在上面的代码中需要额外的。