#java #performance #function #constants
#java #Производительность #функция #константы
Вопрос:
У меня есть функция, для которой в двух разных ситуациях я хочу использовать два разных набора констант. Например: в одном я хочу использовать
private final class MoveOverTarget
{
private final int SPEED = 3000;
private final int SLOW_SPEED = 0;
private final float D_B_SLOW_REGION = 0;
public final float D_B_TARGET_RANGE = 0;
}
а в другой
private final class MoveTowardsTarget
{
private final int SPEED = 1000;
private final int SLOW_SPEED = 500;
private final float D_B_SLOW_REGION = 50;
public final float D_B_TARGET_RANGE = 10;
}
для одной и той же функции
private boolean bValInTargetRange(float targetValue, boolean moveOverTarget)
{}
на данный момент я не могу придумать простое в реализации решение и, похоже, не нахожу правильных ключевых слов для Google. Можете ли вы мне помочь?
Заранее спасибо.
Комментарии:
1. Рассматривали ли вы возможность использования экземпляров класса для хранения связанных данных (набора констант) вместо отдельных классов?
2. Если значения констант меняются, они не являются константами 🙂 Используйте карту, используйте два экземпляра одного и того же класса, причем каждый экземпляр инициализируется соответствующими значениями, используйте перечисления или наследование и т. Д. Здесь у вас есть много вариантов
3. @KarlKnechtel и fps большое вам спасибо за эти ответы, я сделал это с двумя экземплярами класса, в котором хранятся только связанные данные, которые я затем использую в своем методе.
Ответ №1:
Сделайте их public static
:
public static final int SPEED = 3000;
И ссылаться на них, используя имя класса:
MoveOverTarget.SPEED
MoveTowardsTarget.SPEED
Также подумайте enum
, будет ли лучше использовать s. Другой вариант: определить две копии метода, по одной в каждом классе, и ссылаться на константы из этого класса в методе.
Еще один вариант: определите абстрактный суперкласс, напишите там метод и получите доступ к константам с помощью абстрактных методов. Затем определите два подкласса и в каждом реализуйте абстрактные методы, которые возвращают разные значения для констант, также определенных в каждом из подклассов.
Комментарии:
1. Спасибо. Мне это кажется слишком сложным, и это то, чего я хотел избежать.