1.方法嵌套实现方法的重载:
public class EventBuilder { /** * Instantiate an Event instance based on the provided body and headers. * If <code>headers</code> is <code>null</code>, then it is ignored. * @param body * @param headers * @return */ public static Event withBody(byte[] body, Map<String, String> headers) { Event event = new SimpleEvent(); if(body == null) { body = new byte[0]; } event.setBody(body); if (headers != null) { event.setHeaders(new HashMap<String, String>(headers)); } return event; } public static Event withBody(byte[] body) { return withBody(body, null); } public static Event withBody(String body, Charset charset, Map<String, String> headers) { return withBody(body.getBytes(charset), headers); } public static Event withBody(String body, Charset charset) { return withBody(body, charset, null); } }
2.序列器这种适合作为成员变量存在在读写类中,并不适合根据序列器定义不同读写类。
这样reader、writer这种类的基本信息不至于反复定义,序列器只需要做序列文本的工作就可以了。
public class ReliableSpoolingFileEventReader implements ReliableEventReader { private static final Logger logger = LoggerFactory .getLogger(ReliableSpoolingFileEventReader.class); static final String metaFileName = ".flumespool-main.meta"; private final File spoolDirectory; private final String completedSuffix; private final String deserializerType; private final Context deserializerContext; private final Pattern ignorePattern; private final File metaFile; private final boolean annotateFileName; private final boolean annotateBaseName; private final String fileNameHeader; private final String baseNameHeader; private final String deletePolicy; private final Charset inputCharset; private final DecodeErrorPolicy decodeErrorPolicy; private final ConsumeOrder consumeOrder; private EventDeserializer des = currentFile.get().getDeserializer(); }
3.