Я реализовал функцию ведения журнала следующим образом:
void log (String output)
{
if(debug)
{
String val = <some string captured>;
Log.write("Logging: " + val + output, this.handle);
}
}
Этот log
используется в нескольких местах, как,
log("value is " + str + " " + val); // 'str','val' can be a string or class with '.toString()'
log("error: " + e1 + ". Exiting."); // 'e1' can be a class with overloaded '.tostring()'
Теперь проблема в том, что (получил как кодобзор комментариев), преобразование объекта class
в строку произойдет, даже если условие debug
не включено.В некоторых местах это приведет к нежелательному снижению производительности.
Я не хочу загромождать свой код, помещая это условие if()
везде, где важен только output
, а все остальное повторяется.Каков наилучший способ решения этой проблемы с использованием средств Java?
Я подумал об использовании обобщений:
<T> void log (String output, T arg)
{
if(debug)
{
String val = <some string captured>;
Log.write("Logging: " + val + output + arg.toString(), this.handle);
}
}
Будет ли такой подход хорошей оптимизацией?Кроме того, могу ли я элегантно расширить эту универсальную функцию, чтобы принимать несколько аргументов?