Java 常数类的重要性
如果我把常量变量值直接放在类中,那么当这个值发生变化时,它就会惊慌失措。 如果我创建一个常量类来保持这些常量,那么只在一个类中进行更改会有所帮助。但我需要再次确定所有使用这些常量的类。因为需要重新编译 那么,需要单独的常量类吗?Java 常数类的重要性,java,Java,如果我把常量变量值直接放在类中,那么当这个值发生变化时,它就会惊慌失措。 如果我创建一个常量类来保持这些常量,那么只在一个类中进行更改会有所帮助。但我需要再次确定所有使用这些常量的类。因为需要重新编译 那么,需要单独的常量类吗? 如果更好的话,建议我另一种管理常量的方法。使用属性文件而不是创建常量类我将永远不会对所有常量使用类 我也不会对我所有的整数或字符串使用一个类,或者对所有的最终变量使用一个类,对所有的静态变量使用另一个类,等等 按功能分组,而不是按语言功能分组 如果我创建一个常量类来保持
如果更好的话,建议我另一种管理常量的方法。使用属性文件而不是创建常量类我将永远不会对所有常量使用类 我也不会对我所有的整数或字符串使用一个类,或者对所有的最终变量使用一个类,对所有的静态变量使用另一个类,等等 按功能分组,而不是按语言功能分组 如果我创建一个常量类来保持这些常量,那么只在一个类中进行更改会有所帮助
按照这个逻辑,您可以将整个项目放在一个类中。我对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;
}
}
您可以为不同的属性使用多个构造函数(但我不确定最后一种可能性是否是一种好的技术,因为某些getter的名称可能不同…)
您可以在任何地方检索值,如:
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());
grt,我多么想念它。。。快速回复。。但它会增加IO操作。不,不是。您只需在静态文件中读取文件。并在整个应用程序中使用变量。为什么常量的值会发生变化???当然,您的常量不应该变化到足以引起问题的程度。如果他们这样做了,那么听起来好像他们不是常数……这可能是由于糟糕的设计,或者当两个独立的团队在同一个应用程序上工作时所引起的变化。因此,由于沟通失误,或者可能是由于未来项目需要使某些价值具有意义,或者出于其他原因,您的答案对我来说非常不清楚。我不要求分组常数。如果我误解了你的问题,我会按照我的项目和要求来做。我认为您建议在项目中使用一个类,在其中放置所有常量(静态最终变量)。我在各种项目中都看到过这种情况,我认为这是一种不好的做法。关于属性文件:对于放入属性文件中的所有内容,都将丢失编译时类型检查。有些东西必须放在属性文件中,但我看到一些项目过度使用它们。@michael667,我同意你的上一句话,但属性文件必须用来保持常量值。在编译时如何检查这些值?编译器将检查语法和数据类型。默认情况下,存储在属性文件中的值将具有字符串类型。这些都需要你的介入才能施展。