从最终类中获取所有静态String值作为String Array或List

时间:2016-04-06 15:11:41

标签: java collections java-7

我有以下课程:

 public final class FileNames
{

    private FileNames()
    {}

    public static final String A                     = "a.csv";
    public static final String B                     = "b.csv";
    public static final String C                     = "123.csv";
    ...
}

现在我想从上面获取所有String值,在不同的类中获取。输出可以是String数组或ArrayList或任何其他Collection。我使用的是jdk 1.7。不知道如何继续这一点,因为可以增加字符串列表,即。可以添加“D”,“E”等。

2 个答案:

答案 0 :(得分:3)

反思是你的朋友:)

public class Sample {

    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
        Class<FileNames> clazz = FileNames.class;
        Field[] arr = clazz.getFields(); // Get all public fields of your class
        for (Field f : arr) {
            if (f.getType().equals(String.class)) { // check if field is a String
                String s = (String)f.get(null); // get value of each field
                // add s to a List
                System.out.println(s);
            }

        }
    }

}

 final class FileNames {

    private FileNames() {
    }

    public static final String A = "a.csv";
    public static final String B = "b.csv";
    public static final String C = "123.csv";

}

O / P:

a.csv
b.csv
123.csv

答案 1 :(得分:-1)

您添加此功能:

public static ArrayList<String> getFilenames() {
   ArrayList<String> filenames = new ArrayList<String>;

   filenames.add(A);
   filenames.add(B);
   filenames.add(C);

   return filenames;
}

然后你可以在以下地方使用这个功能:

ArrayList<String> filenames = new ArrayList<String>;
filenames = Filenames.getFilenames();
String filenameA = filenames.get(0); // to retrieve the first element (A)
String filenameB = filenames.get(1); // to retrieve the second element (B)
// and so on...

如果您想添加更多内容并以自动方式转换,可以查看以下内容:Java method with unlimited arguments

我希望我能帮到你。