Я написал код, который использует ширину и высоту экрана в GraphicsProgram для рисования ящиков, в которых я делаю другие вещи. Эти поля будут 1/6 вертикального размера экрана (высота).getHeight() и константы (java)
так, как я это теперь в моем методе выполнения я делаю переменную так:
int boxHeight = getHeight()/6;
который я затем перейти к другим методам, как это:
placeBox(boxHeight);
И в моем placeBox метод Я получаю эту переменную следующим образом:
private void placeBox(int boxHeight) { ..code.. }
Все работает, но мне было интересно, если бы это было возможно вместо этого использовать константы, которые я бы декларировать перед моим методом выполнения, как это:
private static final int constantBoxHeight = getHeight()/6;
Однако это дает мне следующую ошибку компилятора:
non-static method getHeight() cannot be referenced from a static context
Так мои вопросы: я реализации постоянного правильного путь? Если нет, то как его реализовать правильно? Кроме того, если то, что я пытаюсь сделать, даже возможно, в чем преимущество использования констант вместо того, чтобы переместить мои переменные из моего метода запуска в методы внутри него, а затем переместить его в другие методы внутри него?
GetHeight() импортируется из acm.graphics. *
Что вы не понимаете об ошибке, которую вы получаете? Вы посмотрели его? –
Когда вы объявляете статическую переменную, это переменная класса, а не текущий объект. Поэтому, если вы должны были вызвать 'getHeight()' в классе, а не в экземпляре, и если это может работать (а это не так), какую высоту экземпляра вы пытаетесь получить? Это не имеет смысла делать это. –
@HovercraftFullOfEels Итак, что мне нужно сделать, это объявить константу в моем методе запуска следующим образом: \t \t final int bH = getHeight()/6; Этот способ лучше, чем перемещение переменных, как это было до этого? – Chronicle