【问题标题】:Difference between package class and private static inner class in Java?Java中包类和私有静态内部类的区别?
【发布时间】:2014-07-09 15:30:56
【问题描述】:

如果我有两个类ThingThingAdapter,其中ThingAdapter 仅在类Thing 中使用,那么将ThingAdapter 定义为@ 的静态内部类之间是否存在性能(或其他方面)差异987654327@ 与旁边的包范围类?

我正在查看的场景有 ThingAdapter 的使用有点像

public class Thing {
    private ThingAdapter thingAdapter;
    public doStuff() {
        thingAdapter = new ThingAdapter();
    }
}

ThingAdapter 可以像这样实现

public class Thing {
    // stuff

    private static class ThingAdapter {
        // adapter stuff
    }
}

public class Thing {
    // stuff
}

/* package */ class ThingAdapter {
    // adapter stuff
}

我目前工作的环境是 Android,我还没有看到两者之间的任何性能差异——尽管没有实际对其进行基准测试。另外,Dalvik 和 JVM 会不会区别对待?

【问题讨论】:

  • 真正的区别是:第一堂课在课堂上,名字为Thing$ThingAdapter,第二堂课只是ThingAdapter。所以没有区别。
  • 如果调用私有方法,可能会对性能产生影响。问题中的代码没有,所以没有区别。 (见stackoverflow.com/questions/24210531/…。)

标签: java performance dalvik


【解决方案1】:

没有明显的性能差异。在这种情况下,类设计不应影响性能。一个好的方法是编写代码以使开发人员尽可能清晰,然后对其进行分析以发现瓶颈(如果需要),然后仅优化受影响的代码。

【讨论】:

  • 谢谢。我只是想确保我不会为将来的失败做好准备。
猜你喜欢
  • 2013-07-05
  • 2017-05-23
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 2012-07-17
相关资源
最近更新 更多