我正在为我的机器人团队开发轻量级数据/度量记录器。我需要能够在任何给定的时间点从传感器或开关中检索数据,并且我想让它们成为我想要的任何原始数字。将任何原始数字的原始字节记录到文件中
目前,我有一个受保护的Loggable
接口,它具有单一方法Object getLogData()
。对于不同的原始类型有几个公共子接口。它们中的每一个都可以注册到Logger
(添加到List<Loggable>
)以在运行时访问数据。
这是从Loggable
类测井数据当前,未经测试的代码:
loggables.forEach((loggable) -> {
if (loggable instanceof ByteLoggable) {
writer.write((Byte) loggable.getLogData());
} else if (loggable instanceof ShortLoggable) {
writer.writeShort((Short) loggable.getLogData());
} else if (loggable instanceof IntLoggable) {
writer.writeInt((Integer) loggable.getLogData());
} else if (loggable instanceof LongLoggable) {
writer.writeLong((Long) loggable.getLogData());
} else if (loggable instanceof FloatLoggable) {
writer.writeFloat((Float) loggable.getLogData());
} else if (loggable instanceof DoubleLoggable) {
writer.writeDouble((Double) loggable.getLogData());
} else {
throw new IllegalArgumentException("Unknown loggable type: " + loggable);
}
});
此块似乎很笨重,我 - 我觉得有一个更简单的做到这一点,我可以”的方式想想。有没有人有任何想法?
我不认为有一个在Java中。可能有一个图书馆。 – immibis 2015-02-10 20:38:07
使用包含多个日志方法的包装来获取特定的数据类型? – 2015-02-10 20:39:34
访客模式可能在这里工作。让'作家'成为访问者。 – 2015-02-10 20:44:24