«Соглашение», о котором вы спрашиваете, действительно сводится к использованию и определению ваших ценностей. Когда вы делаете значения Enums, тогда вы должны обрабатывать их как этот тип. Смысл, поля в вашем классе должны быть определены как таковые:
private MyEnum avgReflection;
private MyEnum maxLifesteal;
...
public MyEnum getAvgReflection {
return this.avgReflection;
}
И так далее.
Теперь у вас могут появиться двойные значения, а эти значения являются статическими. Я не думаю, что вас беспокоят статические значения, но вместо этого, возможно, статический набор значений.
Вы тогда есть два возможных варианта: объявить все возможные параметры, как поля, или создать одно совокупное поле для хранения всех значений, а затем использовать Enum в качестве индекса:
public enum MyEnum {
averageReflection(0),
maximumLifeSteal(1);
private int value;
private MyEnum(int value) {
this.value = value;
}
public int getValue() {
return this.value;
}
}
...
private double[] attributes = new double[100]; // arbitrary initialization
public double getAttribute(MyEnum attribute) {
return this.attributes[attribute.getValue()];
}
Два ограничения на использование массива (предполагая, что вы хотите примитивные значения, и вы обеспокоены производительностью) состоит в том, что все значения должны быть одного типа, а количество атрибутов будет установлено во время компиляции.
Кроме того, вы можете просто хотите использовать Map < String, двойную > или Карту < MyEnum, двойную >, или даже Карту < MyEnum, объект >. Тип карты даст вам возможность поддерживать набор динамического размера и, возможно, иметь несколько типов (с дорогостоящими издержками преобразования ваших значений).
Вы должны основывать свое решение на количестве необходимых вам атрибутов, о том, какие накладные расходы вы готовы терпеть, и ваш стиль.
Спасибо! Все они являются числовыми значениями, и я не вижу новых добавленных в ближайшее время; для знания и остального, я думаю, что я бы лучше сделал раздельный getter – AscendedKitten
, а целое вполне представимо как «double», поэтому проблем не было бы – Moira