Разница между классом пакета и закрытым статическим внутренним классом в Java?

1

Если если у меня есть два класса 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 относиться к этому по-другому?

  • 0
    Реальная разница такова: первый класс находится в классе и с именем Thing$ThingAdapter , второй - просто ThingAdapter . Так что нет никакой разницы.
  • 0
    Если вы вызываете частные методы, это может повлиять на производительность. Код в вопросе нет, поэтому нет никакой разницы. (См. Stackoverflow.com/questions/24210531/… .)
Теги:
performance
dalvik

1 ответ

2
Лучший ответ

Нет заметных различий в производительности. В этом случае класс дизайна не должен влиять на характеристики. Хороший подход заключается в том, чтобы написать код как можно более ясный для разработчика, а затем профилировать его, чтобы найти узкие места (при необходимости), а затем оптимизировать только затронутый код.

  • 0
    Благодарю. Я просто хотел убедиться, что я не настрою себя на неудачу в будущем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню