用于跨平台的静态记录器,例如Java(Applet)和Android

时间:2010-11-19 12:46:30

标签: java android logging cross-platform applet

我想使用像:

这样的东西
MyLogger.e("MyApp","I have an error.");

在一个跨平台项目中,MyLogger应该是静态的,以使其在整个项目中可用。

所以我尝试了类似的事情:

MyAndroidLogger implements MyLogger {
   public static void e(String strApp, String strErr) {
     Log.e(strApp, strErr);
}

MyAppletLogger implements MyLogger {
   private static Logger logger = Logger.getLogger();
   public static void e(String strApp, String strErr) {
     logger.e(strApp, strErr);
}

编译器抱怨静态。我该怎么做呢?有可能吗?如果没有,那么正确的做法是什么?

提前致谢...

2 个答案:

答案 0 :(得分:2)

您无法按照自己的方式调用界面。你必须要打电话

MyAndroidLogger.e("MyApp","I have an error.");

MyAppletLogger.e("MyApp","I have an error.");

如果要在两个平台上使用相同的调用,则必须创建一个辅助类,该类具有对正确类的引用:

MyLoggerHelper.e("MyApp","I have an error.");

其中MyLoggerHelper是一个类,它知道它应该调用前两个调用中的哪一个,并将此调用转发给适当的调用。

答案 1 :(得分:2)

接口没有静态方法。这就是你无法调用它们的原因。

您可以尝试使用单身人士。

YourWhateverLogger.getInstance().e("Hello");