#java
#java
Вопрос:
Если я помещаю значения постоянных переменных непосредственно в классы, это вызывает панику, когда это значение изменяется. Если я создам постоянный класс для сохранения таких констант, это поможет вносить изменения только в один класс. Но опять же мне нужно определить все классы, которые используют эти константы. Потому что требуется перекомпиляция.
тогда зачем нужен отдельный постоянный класс? предложите мне другой способ управления константами, если лучше.
Комментарии:
1. почему значение изменяется для константы????
2. Конечно, ваши константы не должны меняться настолько, чтобы это стало проблемой. Если они это делают, то это звучит так, как будто они не являются константами…
3. Это может быть изменение из-за плохого дизайна или когда 2 отдельные команды работают над одним и тем же приложением. таким образом, из-за недопонимания или, возможно, из-за необходимости проекта в будущем сделать некоторые значения значимыми или по какой-либо другой причине
Ответ №1:
Используйте файл свойств вместо создания постоянного класса
Комментарии:
1. ото, как я это пропустил … очень быстрый ответ.. но это увеличит операцию ввода-вывода.
2. нет, это не так. Вы просто читаете файл в статическом файле. и используйте переменные во всем приложении.
Ответ №2:
Я БЫ НИКОГДА не использовал класс для всех моих констант.
Я бы также НИКОГДА НЕ использовал класс для всех моих целых чисел или для всех строк, или один класс для всех конечных переменных и другой класс для всех статических переменных и т.д.
Группируйте своих членов по функциям, а не по языковой функции.
Если я создам постоянный класс для сохранения таких констант, это поможет вносить изменения только в один класс.
Следуя этой логике, вы могли бы поместить весь свой проект в один класс.
Комментарии:
1. Ваш ответ мне довольно неясен. Я не прошу группировать константы. Я делаю в соответствии с моим проектом, и возникает требование
2. Прошу прощения, если я неправильно понял ваш вопрос. Я думал, вы предложили создать в своем проекте один класс, в который вы помещаете все константы (статические конечные переменные). Я видел это в различных проектах и считаю, что это плохая практика.
3. О файлах свойств: вы потеряете проверку типов во время компиляции для всего, что вы помещаете в файл свойств. Некоторые вещи должны входить в файлы свойств, но я видел проекты, злоупотребляющие ими.
4. @michael667, я согласен с вашим последним утверждением, но файлы свойств должны использоваться для сохранения постоянных значений. Как эти значения будут проверяться во время компиляции? Компилятор проверит синтаксис и тип данных. И значения, которые хранятся в файле свойств, по умолчанию будут иметь строковый тип. Которые требуют вашего вмешательства для приведения.
Ответ №3:
Я довольно новичок в JAVA и не уверен, что хорошо понимаю ваш вопрос, но как насчет чего-то вроде файла Points.java (для примера, но вы можете сделать это для строк, int, объектов… или любых типов), где у вас есть :
package classes;
import java.awt.Point;
public enum Points {
FIRST_POSITION(0,50,50),SECOND_POSITION(1,150,200),THIRD_POSITION(2,175,200),FOURTH_POSITION(3,175,200);
private int index;
private Point point;
private Points(int index,int x, int y){
this.index = index;
this.point = new Point(x, y);
}
public int getIndex() {
return index;
}
public Point getPoint() {
return point;
}
}
Вы можете использовать несколько конструкторов для разных свойств (но я не уверен, что эта последняя возможность может быть хорошей техникой, поскольку некоторые методы получения могут отличаться по именам …)
И вы можете извлекать значения везде, например :
System.out.println(Points.FIRST_POSITION ", index[" Points.FIRST_POSITION.getIndex() "]" ", position:" Points.FIRST_POSITION.getPoint());
System.out.println(Points.SECOND_POSITION ", index[" Points.SECOND_POSITION.getIndex() "]" ", position:" Points.SECOND_POSITION.getPoint());
System.out.println(Points.THIRD_POSITION ", index[" Points.THIRD_POSITION.getIndex() "]" ", position:" Points.THIRD_POSITION.getPoint());
System.out.println(Points.FOURTH_POSITION ", index[" Points.FOURTH_POSITION.getIndex() "]" ", position:" Points.FOURTH_POSITION.getPoint());