Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 常数类的重要性_Java - Fatal编程技术网

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,我同意你的上一句话,但属性文件必须用来保持常量值。在编译时如何检查这些值?编译器将检查语法和数据类型。默认情况下,存储在属性文件中的值将具有字符串类型。这些都需要你的介入才能施展。