在Android上重载静态字段

时间:2012-03-19 13:50:06

标签: android overloading proguard dalvik

ProGuard docs中,它显示:“Google的Dalvik VM无法处理超载的静态字段。” 据我所知,这样的事情

public class A {
  private static final Log log = LogFactory.getLog(A.class.getName());
...
}

public class B extends A {
  private static final Log log = LogFactory.getLog(B.class.getName());
...
}
然后

在Android上不好。这真的是真的还是我弄错了? 那么有什么意义(我现在可以运行我的代码,但是在进行proguard处理后dex失败了)?

2 个答案:

答案 0 :(得分:1)

我认为这意味着你不能在班级A中有两个字段,两个字段都名为log,每个字段都有不同类型:

public class A {
  private static final Log log = LogFactory.getLog(A.class.getName());
  private static final int log = 5;
  ...
}

您无法在源代码中执行此操作,但ProGuard等工具可以生成.class这样的文件,使反编译更有趣。

您无需担心自己的B extends A示例;那将是Dalvik的一个错误。这样的错误会很快得到修复!

答案 1 :(得分:0)

在Java中,final关键字意味着您无法覆盖它,所以这是真的。