簡體   English   中英

有什么方法可以將Constants類中的Java常量轉換為另一個中的迭代形式?

[英]Any way to convert Java constants in a Constants class to an iterative form in another?

我有一個常量類,里面裝滿了一堆最終的靜態字符串。 我需要一種方法來以一種漂亮的數組類型形式訪問此類中的所有這些常量,而無需手動創建包含每個常量的數組。

在類上是否有任何類型的方法可以返回一個迭代數據結構,我可以在另一個類中循環?

謝謝!

您可以使用反射來獲取聲明的字段:

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class field1 {
    private double d;
    public static final int i = 37;
    String s = "testing";

    public static void main(String args[]) {
        field1 f = new field1();

        try {
            Class cls = Class.forName("field1");

            Field fieldlist[] = cls.getDeclaredFields();
            for (Field field : fieldlist) {
                System.out.println("name = " + field.getName());
                System.out.println("decl class = " + field.getDeclaringClass());
                System.out.println("type = " + field.getType());

                int mod = field.getModifiers();
                System.out.println("modifiers = " + Modifier.toString(mod));
                System.out.println("value = " + field.get(f));
                System.out.println("-----");
            }
        } catch (Throwable e) {
            System.err.println(e);
        }
    }
}

這個樣本來自這里

考慮使用enum

enum Foo{
    //do stuff
}

然后你可以使用Foo.values()迭代常量

for(Foo f: Foo.values()){
    //do stuff
}

參考: Java教程

好吧,有Class.getFields() 但是,定義自己的數組會更簡單,並且可以控制內容和順序。

根據您的需要,您可以創建一個陣列一次。

public static final String FOO = "foo";
public static final String BAR = "bar";
public static final String BAZ = "baz";
public static final String[] ALL = { FOO, BAR, BAZ };

或者,您可以使用枚舉器替換所有String常量,並在枚舉中提供toString()方法。 這需要多少工作取決於您現有的代碼庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM