在单独的位置定义静态数据以重用

时间:2015-11-24 07:10:29

标签: java enums

我有我的程序中任何操作期​​间未更改的字符串数据列表。但我需要使用密钥在几个地方访问这些数据。

作为一个例子:(1,ANN)(2,ALEX)(3,ANDROW)

有没有办法将这些数据存储在单独的类中。我可以使用java enum。谢谢

5 个答案:

答案 0 :(得分:2)

使用 enum ,您可以实现以下内容:

public enum Name {

ONE {

            @Override
            public String getName() {
                return "ANN";
            }
        },
TWO {

            @Override
            public String getName() {
                return "ALEX";
            }
        },
THREE {
            @Override
            public String getName() {
                return "ANDROW";
            }
        };

public abstract String getName();

}

然后你可以得到名字:

System.out.println(Name.ONE.getName());

答案 1 :(得分:1)

这确实是使用Map的好选择。您可以将数字用作键,将字符串作为值。

https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

Map<Integer, String> map = new HashMap<Integer,String>();

答案 2 :(得分:1)

Map<Integer,String>是一个选项,如果key也是常量,你可以定义字符串变量,如

public static final string ONE = "ANN";
public static final string TWO = "ALEX";

答案 3 :(得分:1)

使用枚举定义静态映射的另一种方法:

public enum Names {
ONE("ANN"),
TWO("ALEX"),
THREE("ANDREW");

private final String name;
private Names(String name){
  this.name=name;
}

public String getName() {
   return this.name;
}
}

这仅适用于实际静态值(更改为值表示代码更改),但您也可以轻松定义多个属性。

答案 4 :(得分:0)

您可以执行以下操作:

import java.util.HashMap;

public class Main {
    static HashMap<Integer,String>data = new HashMap<>();

    public static void main(String[] args) {
    // write your code here
        data.put(data.size(),"ALEX");   // if you want 1-based indexing,
        data.put(data.size(),"ANDROW"); // then use data.size()+1
        data.put(data.size(),"ANN");    // instead of data.size()

        for (int i = 0; i<data.size(); i++){
            System.out.println(i+" : "+data.get(i)); // use i+1 if 1-based indexing
        }

    }
}