Поскольку объекты статического поля создаются на уровне класса (и являются общими для всех объектов), является ли он статическим импортом в определенных полях и наследует (используя инструменты), все поля будут создавать одинаковый объем памяти?Как наследование статических полей влияет на производительность?
Для примера В этом ниже запрограммировано, сколько объектов MyOwn создано?
class MyOwn{}
public interface ConstantIfc {
public final static MyOwn REF = new MyOwn();
}
class A implements ConstantIfc {}
class B implements ConstantIfc {}
public class c {
public static void main(String... arg) {
A refA = new A();
B refB = new B();
}
}
Если это так же, как конечный постоянный класс для статического импорта лучше, чем постоянный интерфейс?
Обновление:
Я понял, что лучше избегать Inheritance для констант. Неправильное использование наследования реализации часто приводит к негибкому дизайну. Поэтому мы можем лучше пойти на статический импорт класса/интерфейса. но все же интерфейсы являются абстракцией и остаются абстрактными, они не должны содержать детали реализации (включая постоянные переменные). Интерфейсы также часто используются для описания публичного API, в котором детали реализации не принадлежат. По этой причине имеет смысл помещать постоянные данные в класс, а не в интерфейс. Спасибо robjb.
Я считаю, что создается только один экземпляр (для каждого загрузчика классов). –