Если если у меня есть два класса Thing
и ThingAdapter
где ThingAdapter
используется только в классе Thing
, существует ли разница в производительности (или иначе) между определением ThingAdapter
как статического внутреннего класса Thing
и класса scope пакета вместе с ним?
В сценарии, который я ищу, есть 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
. Так что нет никакой разницы.