Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Static_Constants - Fatal编程技术网

在Java中对常量数组使用静态变量或方法

在Java中对常量数组使用静态变量或方法,java,arrays,static,constants,Java,Arrays,Static,Constants,我想知道在Java中使用最终的静态变量或方法来提供常量数组是否更好 假设我们有: public class myColor { public final static String[] COLOR_NAMES = new String[] {"red", "green"}; public final static String[] colorNames() {return new String[] {"red", "green"};} } 对我来说,第二个数组的缺点是每次调用它

我想知道在Java中使用最终的静态变量或方法来提供常量数组是否更好

假设我们有:

public class myColor {
    public final static String[] COLOR_NAMES = new String[] {"red", "green"};
    public final static String[] colorNames() {return new String[] {"red", "green"};}
}
对我来说,第二个数组的缺点是每次调用它时都会创建一个新的字符串数组。但第一种方法的缺点是,任何人都可以使用
颜色名称[0]=“blue”

澄清一下:我特别想为后续与正则表达式的匹配提供一个颜色名称列表

有没有什么既定的方法可以解决这个问题?

您可以使用enum

public enum Color{ 

  RED("red"), GREEN("green");
   final String color;

  Color(String color) {
    this.color=color;
  }

  public String getColor() {
    return color;
  }
 }
您可以使用enum

public enum Color{ 

  RED("red"), GREEN("green");
   final String color;

  Color(String color) {
    this.color=color;
  }

  public String getColor() {
    return color;
  }
 }
您可以使用enum

public enum Color{ 

  RED("red"), GREEN("green");
   final String color;

  Color(String color) {
    this.color=color;
  }

  public String getColor() {
    return color;
  }
 }
您可以使用enum

public enum Color{ 

  RED("red"), GREEN("green");
   final String color;

  Color(String color) {
    this.color=color;
  }

  public String getColor() {
    return color;
  }
 }

这个问题适合使用
Enum
。就我个人而言,我不会为此使用任何方法。但是天气静态阵列是解决这个问题的好办法吗?最好用计算机来解决它

这个问题适合使用
Enum
。就我个人而言,我不会为此使用任何方法。但是天气静态阵列是解决这个问题的好办法吗?最好用计算机来解决它

这个问题适合使用
Enum
。就我个人而言,我不会为此使用任何方法。但是天气静态阵列是解决这个问题的好办法吗?最好用计算机来解决它

这个问题适合使用
Enum
。就我个人而言,我不会为此使用任何方法。但是天气静态阵列是解决这个问题的好办法吗?最好用计算机来解决它

要在构造时初始化数组,可以在大括号中指定列表值:

private static final String[] STRING_ARRAY = {"red", "green", "blue"};
在我的示例中,我假设您不想更改数组的实例,因此将其声明为final。您仍然可以像这样更新单个条目:

 array[0] = "1";

但您将无法使用完全不同的阵列替换阵列。如果值将发生很大的变化,特别是如果值的数量将发生变化,那么可能需要考虑使用列表来代替。

要在构建时初始化数组,可以在大括号中指定列表值:

private static final String[] STRING_ARRAY = {"red", "green", "blue"};
在我的示例中,我假设您不想更改数组的实例,因此将其声明为final。您仍然可以像这样更新单个条目:

 array[0] = "1";

但您将无法使用完全不同的阵列替换阵列。如果值将发生很大的变化,特别是如果值的数量将发生变化,那么可能需要考虑使用列表来代替。

要在构建时初始化数组,可以在大括号中指定列表值:

private static final String[] STRING_ARRAY = {"red", "green", "blue"};
在我的示例中,我假设您不想更改数组的实例,因此将其声明为final。您仍然可以像这样更新单个条目:

 array[0] = "1";

但您将无法使用完全不同的阵列替换阵列。如果值将发生很大的变化,特别是如果值的数量将发生变化,那么可能需要考虑使用列表来代替。

要在构建时初始化数组,可以在大括号中指定列表值:

private static final String[] STRING_ARRAY = {"red", "green", "blue"};
在我的示例中,我假设您不想更改数组的实例,因此将其声明为final。您仍然可以像这样更新单个条目:

 array[0] = "1";

但您将无法使用完全不同的阵列替换阵列。如果值将发生很大变化,尤其是如果值的数量将发生变化,那么可能值得考虑使用列表来代替。如果可以使用列表,一个选项是:

public final static List<String> COLOR_NAMES = Collections.unmodifiableList(
                                                   Arrays.asList("red", "green"));
否则,您的第二个选项很好,尽管我会写它:

private final String[] COLOR_NAMES = {"red", "green"};
public static String[] getColorNames() { return COLOR_NAMES.clone(); }

如果您可以使用列表,一个选项是:

public final static List<String> COLOR_NAMES = Collections.unmodifiableList(
                                                   Arrays.asList("red", "green"));
否则,您的第二个选项很好,尽管我会写它:

private final String[] COLOR_NAMES = {"red", "green"};
public static String[] getColorNames() { return COLOR_NAMES.clone(); }

如果您可以使用列表,一个选项是:

public final static List<String> COLOR_NAMES = Collections.unmodifiableList(
                                                   Arrays.asList("red", "green"));
否则,您的第二个选项很好,尽管我会写它:

private final String[] COLOR_NAMES = {"red", "green"};
public static String[] getColorNames() { return COLOR_NAMES.clone(); }

如果您可以使用列表,一个选项是:

public final static List<String> COLOR_NAMES = Collections.unmodifiableList(
                                                   Arrays.asList("red", "green"));
否则,您的第二个选项很好,尽管我会写它:

private final String[] COLOR_NAMES = {"red", "green"};
public static String[] getColorNames() { return COLOR_NAMES.clone(); }


这是使用
Enum
的示例,但第一个示例有一个缺点,即任何人都可以使用COLOR_NAMES[0]=“blue”。为什么这是一个劣势?这是一个最终数组,不是吗?或者使用枚举。。。也许?@cbach数组是最终的,但不是它的内容。这是使用
Enum
的示例,但第一个数组有一个缺点,任何人都可以使用COLOR\u NAMES[0]=“blue”。为什么这是一个劣势?这是一个最终数组,不是吗?或者使用枚举。。。也许?@cbach数组是最终的,但不是它的内容。这是使用
Enum
的示例,但第一个数组有一个缺点,任何人都可以使用COLOR\u NAMES[0]=“blue”。为什么这是一个劣势?这是一个最终数组,不是吗?或者使用枚举。。。也许?@cbach数组是最终的,但不是它的内容。这是使用
Enum
的示例,但第一个数组有一个缺点,任何人都可以使用COLOR\u NAMES[0]=“blue”。为什么这是一个劣势?这是一个最终数组,不是吗?或者使用枚举。。。可能?@cbach数组是最终的,但不是它的内容。您可以将
color
设置为最终的和私有的。如何获取所有已定义枚举名称的列表/数组?
color.values()
将返回所有枚举的
color[]
,但我必须将它们转换为字符串数组-->这并不比首先使用方法更好。虽然我承认枚举更优雅。您可以将
color
设置为最终和私有。如何获取所有已定义枚举名称的列表/数组?
color.values()
将返回所有枚举的
color[]
,但我必须将它们转换为字符串数组-->这并不比首先使用方法更好。尽管我承认枚举更优雅。您可以将
color
设置为最终和私有。如何获取所有已定义枚举名称的列表/数组?
color.values()
wi